// This file was generated from JSON Schema using quicktype, do not modify it directly.
// To parse and unparse this JSON data, add this code to your project and do:
//
//    ifc, err := UnmarshalIfc(bytes)
//    bytes, err = ifc.Marshal()

package ifc

import "encoding/json"

func UnmarshalIfc(data []byte) (Ifc, error) {
	var r Ifc
	err := json.Unmarshal(data, &r)
	return r, err
}

func (r *Ifc) Marshal() ([]byte, error) {
	return json.Marshal(r)
}

type Ifc struct {
	Schema      string                `json:"$schema"`
	Title       string                `json:"title"`
	Description string                `json:"description"`
	Type        AnyOfType             `json:"type"`
	Properties  IFCProperties         `json:"properties"`
	Definitions map[string]Definition `json:"definitions"`
	Required    []string              `json:"required"`
}

type IfcSchema struct {
	Tristate struct {
	} `json:"Tristate"`
	IfcActionRequest struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			Status struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Status"`
			LongDescription struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongDescription"`
		} `json:"fields"`
	} `json:"IfcActionRequest"`
	IfcActor struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TheActor struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TheActor"`
			IsActingUpon struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsActingUpon"`
		} `json:"fields"`
	} `json:"IfcActor"`
	IfcActorRole struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Role struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Role"`
			UserDefinedRole struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedRole"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			HasExternalReference struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasExternalReference"`
		} `json:"fields"`
	} `json:"IfcActorRole"`
	IfcActuator struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcActuator"`
	IfcActuatorType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcActuatorType"`
	IfcAddress struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Purpose struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Purpose"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			UserDefinedPurpose struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedPurpose"`
			OfPerson struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OfPerson"`
			OfOrganization struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OfOrganization"`
		} `json:"fields"`
	} `json:"IfcAddress"`
	IfcAdvancedBrep struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcAdvancedBrep"`
	IfcAdvancedBrepWithVoids struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Voids struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Voids"`
		} `json:"fields"`
	} `json:"IfcAdvancedBrepWithVoids"`
	IfcAdvancedFace struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcAdvancedFace"`
	IfcAirTerminal struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcAirTerminal"`
	IfcAirTerminalBox struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcAirTerminalBox"`
	IfcAirTerminalBoxType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcAirTerminalBoxType"`
	IfcAirTerminalType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcAirTerminalType"`
	IfcAirToAirHeatRecovery struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcAirToAirHeatRecovery"`
	IfcAirToAirHeatRecoveryType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcAirToAirHeatRecoveryType"`
	IfcAlarm struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcAlarm"`
	IfcAlarmType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcAlarmType"`
	IfcAnnotation struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ContainedInStructure struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ContainedInStructure"`
		} `json:"fields"`
	} `json:"IfcAnnotation"`
	IfcAnnotationFillArea struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			OuterBoundary struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OuterBoundary"`
			InnerBoundaries struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InnerBoundaries"`
		} `json:"fields"`
	} `json:"IfcAnnotationFillArea"`
	IfcApplication struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			ApplicationDeveloper struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ApplicationDeveloper"`
			Version struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Version"`
			ApplicationFullName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ApplicationFullName"`
			ApplicationIdentifier struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ApplicationIdentifier"`
		} `json:"fields"`
	} `json:"IfcApplication"`
	IfcAppliedValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			AppliedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AppliedValue"`
			UnitBasis struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UnitBasis"`
			ApplicableDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ApplicableDate"`
			FixedUntilDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FixedUntilDate"`
			Category struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Category"`
			Condition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Condition"`
			ArithmeticOperator struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ArithmeticOperator"`
			Components struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Components"`
			HasExternalReference struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasExternalReference"`
		} `json:"fields"`
	} `json:"IfcAppliedValue"`
	IfcApproval struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Identifier struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identifier"`
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			TimeOfApproval struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TimeOfApproval"`
			Status struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Status"`
			Level struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Level"`
			Qualifier struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Qualifier"`
			RequestingApproval struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RequestingApproval"`
			GivingApproval struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"GivingApproval"`
			HasExternalReferences struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasExternalReferences"`
			ApprovedObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ApprovedObjects"`
			ApprovedResources struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ApprovedResources"`
			IsRelatedWith struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsRelatedWith"`
			Relates struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Relates"`
		} `json:"fields"`
	} `json:"IfcApproval"`
	IfcApprovalRelationship struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingApproval struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingApproval"`
			RelatedApprovals struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedApprovals"`
		} `json:"fields"`
	} `json:"IfcApprovalRelationship"`
	IfcArbitraryClosedProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			OuterCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OuterCurve"`
		} `json:"fields"`
	} `json:"IfcArbitraryClosedProfileDef"`
	IfcArbitraryOpenProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Curve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Curve"`
		} `json:"fields"`
	} `json:"IfcArbitraryOpenProfileDef"`
	IfcArbitraryProfileDefWithVoids struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			InnerCurves struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InnerCurves"`
		} `json:"fields"`
	} `json:"IfcArbitraryProfileDefWithVoids"`
	IfcAsset struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Identification struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identification"`
			OriginalValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OriginalValue"`
			CurrentValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CurrentValue"`
			TotalReplacementCost struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TotalReplacementCost"`
			Owner struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Owner"`
			User struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"User"`
			ResponsiblePerson struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ResponsiblePerson"`
			IncorporationDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IncorporationDate"`
			DepreciatedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DepreciatedValue"`
		} `json:"fields"`
	} `json:"IfcAsset"`
	IfcAsymmetricIShapeProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BottomFlangeWidth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomFlangeWidth"`
			BottomFlangeWidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomFlangeWidthAsString"`
			OverallDepth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallDepth"`
			OverallDepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallDepthAsString"`
			WebThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebThickness"`
			WebThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebThicknessAsString"`
			BottomFlangeThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomFlangeThickness"`
			BottomFlangeThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomFlangeThicknessAsString"`
			BottomFlangeFilletRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomFlangeFilletRadius"`
			BottomFlangeFilletRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomFlangeFilletRadiusAsString"`
			TopFlangeWidth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopFlangeWidth"`
			TopFlangeWidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopFlangeWidthAsString"`
			TopFlangeThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopFlangeThickness"`
			TopFlangeThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopFlangeThicknessAsString"`
			TopFlangeFilletRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopFlangeFilletRadius"`
			TopFlangeFilletRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopFlangeFilletRadiusAsString"`
			BottomFlangeEdgeRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomFlangeEdgeRadius"`
			BottomFlangeEdgeRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomFlangeEdgeRadiusAsString"`
			BottomFlangeSlope struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomFlangeSlope"`
			BottomFlangeSlopeAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomFlangeSlopeAsString"`
			TopFlangeEdgeRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopFlangeEdgeRadius"`
			TopFlangeEdgeRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopFlangeEdgeRadiusAsString"`
			TopFlangeSlope struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopFlangeSlope"`
			TopFlangeSlopeAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopFlangeSlopeAsString"`
		} `json:"fields"`
	} `json:"IfcAsymmetricIShapeProfileDef"`
	IfcAudioVisualAppliance struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcAudioVisualAppliance"`
	IfcAudioVisualApplianceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcAudioVisualApplianceType"`
	IfcAxis1Placement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Axis struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Axis"`
		} `json:"fields"`
	} `json:"IfcAxis1Placement"`
	IfcAxis2Placement2D struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RefDirection struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RefDirection"`
		} `json:"fields"`
	} `json:"IfcAxis2Placement2D"`
	IfcAxis2Placement3D struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Axis struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Axis"`
			RefDirection struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RefDirection"`
		} `json:"fields"`
	} `json:"IfcAxis2Placement3D"`
	IfcBSplineCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Degree struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Degree"`
			ControlPointsList struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ControlPointsList"`
			CurveForm struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CurveForm"`
			ClosedCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ClosedCurve"`
			SelfIntersect struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SelfIntersect"`
			UpperIndexOnControlPoints struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UpperIndexOnControlPoints"`
		} `json:"fields"`
	} `json:"IfcBSplineCurve"`
	IfcBSplineCurveWithKnots struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			KnotMultiplicities struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"KnotMultiplicities"`
			Knots struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Knots"`
			KnotsAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"KnotsAsString"`
			KnotSpec struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"KnotSpec"`
			UpperIndexOnKnots struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UpperIndexOnKnots"`
		} `json:"fields"`
	} `json:"IfcBSplineCurveWithKnots"`
	IfcBSplineSurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			UDegree struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UDegree"`
			VDegree struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VDegree"`
			ControlPointsList struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ControlPointsList"`
			SurfaceForm struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SurfaceForm"`
			UClosed struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UClosed"`
			VClosed struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VClosed"`
			SelfIntersect struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SelfIntersect"`
			UUpper struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UUpper"`
			VUpper struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VUpper"`
		} `json:"fields"`
	} `json:"IfcBSplineSurface"`
	IfcBSplineSurfaceWithKnots struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			UMultiplicities struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UMultiplicities"`
			VMultiplicities struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VMultiplicities"`
			UKnots struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UKnots"`
			UKnotsAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UKnotsAsString"`
			VKnots struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VKnots"`
			VKnotsAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VKnotsAsString"`
			KnotSpec struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"KnotSpec"`
			KnotVUpper struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"KnotVUpper"`
			KnotUUpper struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"KnotUUpper"`
		} `json:"fields"`
	} `json:"IfcBSplineSurfaceWithKnots"`
	IfcBeam struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcBeam"`
	IfcBeamStandardCase struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcBeamStandardCase"`
	IfcBeamType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcBeamType"`
	IfcBlobTexture struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RasterFormat struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RasterFormat"`
			RasterCode struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RasterCode"`
		} `json:"fields"`
	} `json:"IfcBlobTexture"`
	IfcBlock struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			XLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"XLength"`
			XLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"XLengthAsString"`
			YLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"YLength"`
			YLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"YLengthAsString"`
			ZLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ZLength"`
			ZLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ZLengthAsString"`
		} `json:"fields"`
	} `json:"IfcBlock"`
	IfcBoiler struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcBoiler"`
	IfcBoilerType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcBoilerType"`
	IfcBooleanClippingResult struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcBooleanClippingResult"`
	IfcBooleanResult struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Operator struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Operator"`
			FirstOperand struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FirstOperand"`
			SecondOperand struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SecondOperand"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcBooleanResult"`
	IfcBoundaryCondition struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
		} `json:"fields"`
	} `json:"IfcBoundaryCondition"`
	IfcBoundaryCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcBoundaryCurve"`
	IfcBoundaryEdgeCondition struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TranslationalStiffnessByLengthX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TranslationalStiffnessByLengthX"`
			TranslationalStiffnessByLengthY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TranslationalStiffnessByLengthY"`
			TranslationalStiffnessByLengthZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TranslationalStiffnessByLengthZ"`
			RotationalStiffnessByLengthX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RotationalStiffnessByLengthX"`
			RotationalStiffnessByLengthY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RotationalStiffnessByLengthY"`
			RotationalStiffnessByLengthZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RotationalStiffnessByLengthZ"`
		} `json:"fields"`
	} `json:"IfcBoundaryEdgeCondition"`
	IfcBoundaryFaceCondition struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TranslationalStiffnessByAreaX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TranslationalStiffnessByAreaX"`
			TranslationalStiffnessByAreaY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TranslationalStiffnessByAreaY"`
			TranslationalStiffnessByAreaZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TranslationalStiffnessByAreaZ"`
		} `json:"fields"`
	} `json:"IfcBoundaryFaceCondition"`
	IfcBoundaryNodeCondition struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TranslationalStiffnessX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TranslationalStiffnessX"`
			TranslationalStiffnessY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TranslationalStiffnessY"`
			TranslationalStiffnessZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TranslationalStiffnessZ"`
			RotationalStiffnessX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RotationalStiffnessX"`
			RotationalStiffnessY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RotationalStiffnessY"`
			RotationalStiffnessZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RotationalStiffnessZ"`
		} `json:"fields"`
	} `json:"IfcBoundaryNodeCondition"`
	IfcBoundaryNodeConditionWarping struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WarpingStiffness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WarpingStiffness"`
		} `json:"fields"`
	} `json:"IfcBoundaryNodeConditionWarping"`
	IfcBoundedCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcBoundedCurve"`
	IfcBoundedSurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcBoundedSurface"`
	IfcBoundingBox struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Corner struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Corner"`
			XDim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"XDim"`
			XDimAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"XDimAsString"`
			YDim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"YDim"`
			YDimAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"YDimAsString"`
			ZDim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ZDim"`
			ZDimAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ZDimAsString"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcBoundingBox"`
	IfcBoxedHalfSpace struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Enclosure struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Enclosure"`
		} `json:"fields"`
	} `json:"IfcBoxedHalfSpace"`
	IfcBuilding struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ElevationOfRefHeight struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ElevationOfRefHeight"`
			ElevationOfRefHeightAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ElevationOfRefHeightAsString"`
			ElevationOfTerrain struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ElevationOfTerrain"`
			ElevationOfTerrainAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ElevationOfTerrainAsString"`
			BuildingAddress struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BuildingAddress"`
		} `json:"fields"`
	} `json:"IfcBuilding"`
	IfcBuildingElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcBuildingElement"`
	IfcBuildingElementPart struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcBuildingElementPart"`
	IfcBuildingElementPartType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcBuildingElementPartType"`
	IfcBuildingElementProxy struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcBuildingElementProxy"`
	IfcBuildingElementProxyType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcBuildingElementProxyType"`
	IfcBuildingElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcBuildingElementType"`
	IfcBuildingStorey struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Elevation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Elevation"`
			ElevationAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ElevationAsString"`
		} `json:"fields"`
	} `json:"IfcBuildingStorey"`
	IfcBuildingSystem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			LongName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongName"`
		} `json:"fields"`
	} `json:"IfcBuildingSystem"`
	IfcBurner struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcBurner"`
	IfcBurnerType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcBurnerType"`
	IfcCShapeProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Depth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Depth"`
			DepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DepthAsString"`
			Width struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Width"`
			WidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WidthAsString"`
			WallThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WallThickness"`
			WallThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WallThicknessAsString"`
			Girth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Girth"`
			GirthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"GirthAsString"`
			InternalFilletRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InternalFilletRadius"`
			InternalFilletRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InternalFilletRadiusAsString"`
		} `json:"fields"`
	} `json:"IfcCShapeProfileDef"`
	IfcCableCarrierFitting struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCableCarrierFitting"`
	IfcCableCarrierFittingType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCableCarrierFittingType"`
	IfcCableCarrierSegment struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCableCarrierSegment"`
	IfcCableCarrierSegmentType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCableCarrierSegmentType"`
	IfcCableFitting struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCableFitting"`
	IfcCableFittingType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCableFittingType"`
	IfcCableSegment struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCableSegment"`
	IfcCableSegmentType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCableSegmentType"`
	IfcCartesianPoint struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Coordinates struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Coordinates"`
			CoordinatesAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CoordinatesAsString"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcCartesianPoint"`
	IfcCartesianPointList struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcCartesianPointList"`
	IfcCartesianPointList2D struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			CoordList struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CoordList"`
		} `json:"fields"`
	} `json:"IfcCartesianPointList2D"`
	IfcCartesianPointList3D struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			CoordList struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CoordList"`
		} `json:"fields"`
	} `json:"IfcCartesianPointList3D"`
	IfcCartesianTransformationOperator struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Axis1 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Axis1"`
			Axis2 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Axis2"`
			LocalOrigin struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LocalOrigin"`
			Scale struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scale"`
			ScaleAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ScaleAsString"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
			Scl struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scl"`
			SclAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SclAsString"`
		} `json:"fields"`
	} `json:"IfcCartesianTransformationOperator"`
	IfcCartesianTransformationOperator2D struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcCartesianTransformationOperator2D"`
	IfcCartesianTransformationOperator2DnonUniform struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Scale2 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scale2"`
			Scale2AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scale2AsString"`
			Scl2 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scl2"`
			Scl2AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scl2AsString"`
		} `json:"fields"`
	} `json:"IfcCartesianTransformationOperator2DnonUniform"`
	IfcCartesianTransformationOperator3D struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Axis3 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Axis3"`
		} `json:"fields"`
	} `json:"IfcCartesianTransformationOperator3D"`
	IfcCartesianTransformationOperator3DnonUniform struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Scale2 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scale2"`
			Scale2AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scale2AsString"`
			Scale3 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scale3"`
			Scale3AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scale3AsString"`
			Scl3 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scl3"`
			Scl3AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scl3AsString"`
			Scl2 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scl2"`
			Scl2AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scl2AsString"`
		} `json:"fields"`
	} `json:"IfcCartesianTransformationOperator3DnonUniform"`
	IfcCenterLineProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Thickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Thickness"`
			ThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ThicknessAsString"`
		} `json:"fields"`
	} `json:"IfcCenterLineProfileDef"`
	IfcChiller struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcChiller"`
	IfcChillerType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcChillerType"`
	IfcChimney struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcChimney"`
	IfcChimneyType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcChimneyType"`
	IfcCircle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Radius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Radius"`
			RadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RadiusAsString"`
		} `json:"fields"`
	} `json:"IfcCircle"`
	IfcCircleHollowProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WallThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WallThickness"`
			WallThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WallThicknessAsString"`
		} `json:"fields"`
	} `json:"IfcCircleHollowProfileDef"`
	IfcCircleProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Radius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Radius"`
			RadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RadiusAsString"`
		} `json:"fields"`
	} `json:"IfcCircleProfileDef"`
	IfcCivilElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcCivilElement"`
	IfcCivilElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcCivilElementType"`
	IfcClassification struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Source struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Source"`
			Edition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Edition"`
			EditionDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EditionDate"`
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			Location struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Location"`
			ReferenceTokens struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferenceTokens"`
			ClassificationForObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ClassificationForObjects"`
			HasReferences struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasReferences"`
		} `json:"fields"`
	} `json:"IfcClassification"`
	IfcClassificationReference struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ReferencedSource struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferencedSource"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			Sort struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Sort"`
			ClassificationRefForObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ClassificationRefForObjects"`
			HasReferences struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasReferences"`
		} `json:"fields"`
	} `json:"IfcClassificationReference"`
	IfcClosedShell struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcClosedShell"`
	IfcCoil struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCoil"`
	IfcCoilType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCoilType"`
	IfcColourRgb struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Red struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Red"`
			RedAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RedAsString"`
			Green struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Green"`
			GreenAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"GreenAsString"`
			Blue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Blue"`
			BlueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BlueAsString"`
		} `json:"fields"`
	} `json:"IfcColourRgb"`
	IfcColourRgbList struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ColourList struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ColourList"`
		} `json:"fields"`
	} `json:"IfcColourRgbList"`
	IfcColourSpecification struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
		} `json:"fields"`
	} `json:"IfcColourSpecification"`
	IfcColumn struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcColumn"`
	IfcColumnStandardCase struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcColumnStandardCase"`
	IfcColumnType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcColumnType"`
	IfcCommunicationsAppliance struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCommunicationsAppliance"`
	IfcCommunicationsApplianceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCommunicationsApplianceType"`
	IfcComplexProperty struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			UsageName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UsageName"`
			HasProperties struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasProperties"`
		} `json:"fields"`
	} `json:"IfcComplexProperty"`
	IfcComplexPropertyTemplate struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			UsageName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UsageName"`
			TemplateType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TemplateType"`
			HasPropertyTemplates struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasPropertyTemplates"`
		} `json:"fields"`
	} `json:"IfcComplexPropertyTemplate"`
	IfcCompositeCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Segments struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Segments"`
			SelfIntersect struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SelfIntersect"`
			ClosedCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ClosedCurve"`
			NSegments struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NSegments"`
		} `json:"fields"`
	} `json:"IfcCompositeCurve"`
	IfcCompositeCurveOnSurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcCompositeCurveOnSurface"`
	IfcCompositeCurveSegment struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Transition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Transition"`
			SameSense struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SameSense"`
			ParentCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ParentCurve"`
			UsingCurves struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UsingCurves"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcCompositeCurveSegment"`
	IfcCompositeProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Profiles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Profiles"`
			Label struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Label"`
		} `json:"fields"`
	} `json:"IfcCompositeProfileDef"`
	IfcCompressor struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCompressor"`
	IfcCompressorType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCompressorType"`
	IfcCondenser struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCondenser"`
	IfcCondenserType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCondenserType"`
	IfcConic struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Position struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Position"`
		} `json:"fields"`
	} `json:"IfcConic"`
	IfcConnectedFaceSet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			CfsFaces struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CfsFaces"`
		} `json:"fields"`
	} `json:"IfcConnectedFaceSet"`
	IfcConnectionCurveGeometry struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			CurveOnRelatingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CurveOnRelatingElement"`
			CurveOnRelatedElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CurveOnRelatedElement"`
		} `json:"fields"`
	} `json:"IfcConnectionCurveGeometry"`
	IfcConnectionGeometry struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcConnectionGeometry"`
	IfcConnectionPointEccentricity struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			EccentricityInX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EccentricityInX"`
			EccentricityInXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EccentricityInXAsString"`
			EccentricityInY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EccentricityInY"`
			EccentricityInYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EccentricityInYAsString"`
			EccentricityInZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EccentricityInZ"`
			EccentricityInZAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EccentricityInZAsString"`
		} `json:"fields"`
	} `json:"IfcConnectionPointEccentricity"`
	IfcConnectionPointGeometry struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PointOnRelatingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PointOnRelatingElement"`
			PointOnRelatedElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PointOnRelatedElement"`
		} `json:"fields"`
	} `json:"IfcConnectionPointGeometry"`
	IfcConnectionSurfaceGeometry struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SurfaceOnRelatingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SurfaceOnRelatingElement"`
			SurfaceOnRelatedElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SurfaceOnRelatedElement"`
		} `json:"fields"`
	} `json:"IfcConnectionSurfaceGeometry"`
	IfcConnectionVolumeGeometry struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			VolumeOnRelatingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VolumeOnRelatingElement"`
			VolumeOnRelatedElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VolumeOnRelatedElement"`
		} `json:"fields"`
	} `json:"IfcConnectionVolumeGeometry"`
	IfcConstraint struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			ConstraintGrade struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConstraintGrade"`
			ConstraintSource struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConstraintSource"`
			CreatingActor struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CreatingActor"`
			CreationTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CreationTime"`
			UserDefinedGrade struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedGrade"`
			HasExternalReferences struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasExternalReferences"`
			PropertiesForConstraint struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PropertiesForConstraint"`
		} `json:"fields"`
	} `json:"IfcConstraint"`
	IfcConstructionEquipmentResource struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcConstructionEquipmentResource"`
	IfcConstructionEquipmentResourceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcConstructionEquipmentResourceType"`
	IfcConstructionMaterialResource struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcConstructionMaterialResource"`
	IfcConstructionMaterialResourceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcConstructionMaterialResourceType"`
	IfcConstructionProductResource struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcConstructionProductResource"`
	IfcConstructionProductResourceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcConstructionProductResourceType"`
	IfcConstructionResource struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Usage struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Usage"`
			BaseCosts struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BaseCosts"`
			BaseQuantity struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BaseQuantity"`
		} `json:"fields"`
	} `json:"IfcConstructionResource"`
	IfcConstructionResourceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BaseCosts struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BaseCosts"`
			BaseQuantity struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BaseQuantity"`
		} `json:"fields"`
	} `json:"IfcConstructionResourceType"`
	IfcContext struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ObjectType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ObjectType"`
			LongName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongName"`
			Phase struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Phase"`
			RepresentationContexts struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RepresentationContexts"`
			UnitsInContext struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UnitsInContext"`
			IsDefinedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsDefinedBy"`
			Declares struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Declares"`
		} `json:"fields"`
	} `json:"IfcContext"`
	IfcContextDependentUnit struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			HasExternalReference struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasExternalReference"`
		} `json:"fields"`
	} `json:"IfcContextDependentUnit"`
	IfcControl struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Identification struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identification"`
			Controls struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Controls"`
		} `json:"fields"`
	} `json:"IfcControl"`
	IfcController struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcController"`
	IfcControllerType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcControllerType"`
	IfcConversionBasedUnit struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			ConversionFactor struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConversionFactor"`
			HasExternalReference struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasExternalReference"`
		} `json:"fields"`
	} `json:"IfcConversionBasedUnit"`
	IfcConversionBasedUnitWithOffset struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ConversionOffset struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConversionOffset"`
			ConversionOffsetAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConversionOffsetAsString"`
		} `json:"fields"`
	} `json:"IfcConversionBasedUnitWithOffset"`
	IfcCooledBeam struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCooledBeam"`
	IfcCooledBeamType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCooledBeamType"`
	IfcCoolingTower struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCoolingTower"`
	IfcCoolingTowerType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCoolingTowerType"`
	IfcCoordinateOperation struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			SourceCRS struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SourceCRS"`
			TargetCRS struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TargetCRS"`
		} `json:"fields"`
	} `json:"IfcCoordinateOperation"`
	IfcCoordinateReferenceSystem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			GeodeticDatum struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"GeodeticDatum"`
			VerticalDatum struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VerticalDatum"`
			HasCoordinateOperation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasCoordinateOperation"`
		} `json:"fields"`
	} `json:"IfcCoordinateReferenceSystem"`
	IfcCostItem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			CostValues struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CostValues"`
			CostQuantities struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CostQuantities"`
		} `json:"fields"`
	} `json:"IfcCostItem"`
	IfcCostSchedule struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			Status struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Status"`
			SubmittedOn struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SubmittedOn"`
			UpdateDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UpdateDate"`
		} `json:"fields"`
	} `json:"IfcCostSchedule"`
	IfcCostValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcCostValue"`
	IfcCovering struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			CoversSpaces struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CoversSpaces"`
			CoversElements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CoversElements"`
		} `json:"fields"`
	} `json:"IfcCovering"`
	IfcCoveringType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCoveringType"`
	IfcCrewResource struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCrewResource"`
	IfcCrewResourceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCrewResourceType"`
	IfcCsgPrimitive3D struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Position struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Position"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcCsgPrimitive3D"`
	IfcCsgSolid struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TreeRootExpression struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TreeRootExpression"`
		} `json:"fields"`
	} `json:"IfcCsgSolid"`
	IfcCurrencyRelationship struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingMonetaryUnit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingMonetaryUnit"`
			RelatedMonetaryUnit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedMonetaryUnit"`
			ExchangeRate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ExchangeRate"`
			ExchangeRateAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ExchangeRateAsString"`
			RateDateTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RateDateTime"`
			RateSource struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RateSource"`
		} `json:"fields"`
	} `json:"IfcCurrencyRelationship"`
	IfcCurtainWall struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCurtainWall"`
	IfcCurtainWallType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcCurtainWallType"`
	IfcCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcCurve"`
	IfcCurveBoundedPlane struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BasisSurface struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BasisSurface"`
			OuterBoundary struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OuterBoundary"`
			InnerBoundaries struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InnerBoundaries"`
		} `json:"fields"`
	} `json:"IfcCurveBoundedPlane"`
	IfcCurveBoundedSurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BasisSurface struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BasisSurface"`
			Boundaries struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Boundaries"`
			ImplicitOuter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ImplicitOuter"`
		} `json:"fields"`
	} `json:"IfcCurveBoundedSurface"`
	IfcCurveStyle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			CurveFont struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CurveFont"`
			CurveWidth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CurveWidth"`
			CurveColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CurveColour"`
			ModelOrDraughting struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ModelOrDraughting"`
		} `json:"fields"`
	} `json:"IfcCurveStyle"`
	IfcCurveStyleFont struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			PatternList struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PatternList"`
		} `json:"fields"`
	} `json:"IfcCurveStyleFont"`
	IfcCurveStyleFontAndScaling struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			CurveFont struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CurveFont"`
			CurveFontScaling struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CurveFontScaling"`
			CurveFontScalingAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CurveFontScalingAsString"`
		} `json:"fields"`
	} `json:"IfcCurveStyleFontAndScaling"`
	IfcCurveStyleFontPattern struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			VisibleSegmentLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VisibleSegmentLength"`
			VisibleSegmentLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VisibleSegmentLengthAsString"`
			InvisibleSegmentLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InvisibleSegmentLength"`
			InvisibleSegmentLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InvisibleSegmentLengthAsString"`
		} `json:"fields"`
	} `json:"IfcCurveStyleFontPattern"`
	IfcCylindricalSurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Radius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Radius"`
			RadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RadiusAsString"`
		} `json:"fields"`
	} `json:"IfcCylindricalSurface"`
	IfcDamper struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDamper"`
	IfcDamperType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDamperType"`
	IfcDerivedProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ParentProfile struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ParentProfile"`
			Operator struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Operator"`
			Label struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Label"`
		} `json:"fields"`
	} `json:"IfcDerivedProfileDef"`
	IfcDerivedUnit struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Elements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Elements"`
			UnitType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UnitType"`
			UserDefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedType"`
		} `json:"fields"`
	} `json:"IfcDerivedUnit"`
	IfcDerivedUnitElement struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			Unit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Unit"`
			Exponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Exponent"`
		} `json:"fields"`
	} `json:"IfcDerivedUnitElement"`
	IfcDimensionalExponents struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			LengthExponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LengthExponent"`
			MassExponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MassExponent"`
			TimeExponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TimeExponent"`
			ElectricCurrentExponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ElectricCurrentExponent"`
			ThermodynamicTemperatureExponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ThermodynamicTemperatureExponent"`
			AmountOfSubstanceExponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AmountOfSubstanceExponent"`
			LuminousIntensityExponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LuminousIntensityExponent"`
		} `json:"fields"`
	} `json:"IfcDimensionalExponents"`
	IfcDirection struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			DirectionRatios struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DirectionRatios"`
			DirectionRatiosAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DirectionRatiosAsString"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcDirection"`
	IfcDiscreteAccessory struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDiscreteAccessory"`
	IfcDiscreteAccessoryType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDiscreteAccessoryType"`
	IfcDistributionChamberElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDistributionChamberElement"`
	IfcDistributionChamberElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDistributionChamberElementType"`
	IfcDistributionCircuit struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcDistributionCircuit"`
	IfcDistributionControlElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			AssignedToFlowElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AssignedToFlowElement"`
		} `json:"fields"`
	} `json:"IfcDistributionControlElement"`
	IfcDistributionControlElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcDistributionControlElementType"`
	IfcDistributionElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			HasPorts struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasPorts"`
		} `json:"fields"`
	} `json:"IfcDistributionElement"`
	IfcDistributionElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcDistributionElementType"`
	IfcDistributionFlowElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			HasControlElements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasControlElements"`
		} `json:"fields"`
	} `json:"IfcDistributionFlowElement"`
	IfcDistributionFlowElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcDistributionFlowElementType"`
	IfcDistributionPort struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			FlowDirection struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlowDirection"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			SystemType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SystemType"`
		} `json:"fields"`
	} `json:"IfcDistributionPort"`
	IfcDistributionSystem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LongName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongName"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDistributionSystem"`
	IfcDocumentInformation struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Identification struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identification"`
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			Location struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Location"`
			Purpose struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Purpose"`
			IntendedUse struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IntendedUse"`
			Scope struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scope"`
			Revision struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Revision"`
			DocumentOwner struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DocumentOwner"`
			Editors struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Editors"`
			CreationTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CreationTime"`
			LastRevisionTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LastRevisionTime"`
			ElectronicFormat struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ElectronicFormat"`
			ValidFrom struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ValidFrom"`
			ValidUntil struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ValidUntil"`
			Confidentiality struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Confidentiality"`
			Status struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Status"`
			DocumentInfoForObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DocumentInfoForObjects"`
			HasDocumentReferences struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasDocumentReferences"`
			IsPointedTo struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsPointedTo"`
			IsPointer struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsPointer"`
		} `json:"fields"`
	} `json:"IfcDocumentInformation"`
	IfcDocumentInformationRelationship struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingDocument struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingDocument"`
			RelatedDocuments struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedDocuments"`
			RelationshipType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelationshipType"`
		} `json:"fields"`
	} `json:"IfcDocumentInformationRelationship"`
	IfcDocumentReference struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			ReferencedDocument struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferencedDocument"`
			DocumentRefForObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DocumentRefForObjects"`
		} `json:"fields"`
	} `json:"IfcDocumentReference"`
	IfcDoor struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			OverallHeight struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallHeight"`
			OverallHeightAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallHeightAsString"`
			OverallWidth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallWidth"`
			OverallWidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallWidthAsString"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			OperationType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OperationType"`
			UserDefinedOperationType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedOperationType"`
		} `json:"fields"`
	} `json:"IfcDoor"`
	IfcDoorLiningProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LiningDepth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningDepth"`
			LiningDepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningDepthAsString"`
			LiningThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningThickness"`
			LiningThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningThicknessAsString"`
			ThresholdDepth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ThresholdDepth"`
			ThresholdDepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ThresholdDepthAsString"`
			ThresholdThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ThresholdThickness"`
			ThresholdThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ThresholdThicknessAsString"`
			TransomThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransomThickness"`
			TransomThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransomThicknessAsString"`
			TransomOffset struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransomOffset"`
			TransomOffsetAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransomOffsetAsString"`
			LiningOffset struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningOffset"`
			LiningOffsetAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningOffsetAsString"`
			ThresholdOffset struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ThresholdOffset"`
			ThresholdOffsetAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ThresholdOffsetAsString"`
			CasingThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CasingThickness"`
			CasingThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CasingThicknessAsString"`
			CasingDepth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CasingDepth"`
			CasingDepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CasingDepthAsString"`
			ShapeAspectStyle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ShapeAspectStyle"`
			LiningToPanelOffsetX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningToPanelOffsetX"`
			LiningToPanelOffsetXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningToPanelOffsetXAsString"`
			LiningToPanelOffsetY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningToPanelOffsetY"`
			LiningToPanelOffsetYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningToPanelOffsetYAsString"`
		} `json:"fields"`
	} `json:"IfcDoorLiningProperties"`
	IfcDoorPanelProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PanelDepth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PanelDepth"`
			PanelDepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PanelDepthAsString"`
			PanelOperation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PanelOperation"`
			PanelWidth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PanelWidth"`
			PanelWidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PanelWidthAsString"`
			PanelPosition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PanelPosition"`
			ShapeAspectStyle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ShapeAspectStyle"`
		} `json:"fields"`
	} `json:"IfcDoorPanelProperties"`
	IfcDoorStandardCase struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcDoorStandardCase"`
	IfcDoorStyle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			OperationType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OperationType"`
			ConstructionType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConstructionType"`
			ParameterTakesPrecedence struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ParameterTakesPrecedence"`
			Sizeable struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Sizeable"`
		} `json:"fields"`
	} `json:"IfcDoorStyle"`
	IfcDoorType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			OperationType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OperationType"`
			ParameterTakesPrecedence struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ParameterTakesPrecedence"`
			UserDefinedOperationType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedOperationType"`
		} `json:"fields"`
	} `json:"IfcDoorType"`
	IfcDraughtingPreDefinedColour struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcDraughtingPreDefinedColour"`
	IfcDraughtingPreDefinedCurveFont struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcDraughtingPreDefinedCurveFont"`
	IfcDuctFitting struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDuctFitting"`
	IfcDuctFittingType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDuctFittingType"`
	IfcDuctSegment struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDuctSegment"`
	IfcDuctSegmentType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDuctSegmentType"`
	IfcDuctSilencer struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDuctSilencer"`
	IfcDuctSilencerType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcDuctSilencerType"`
	IfcEdge struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			EdgeStart struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EdgeStart"`
			EdgeEnd struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EdgeEnd"`
		} `json:"fields"`
	} `json:"IfcEdge"`
	IfcEdgeCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			EdgeGeometry struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EdgeGeometry"`
			SameSense struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SameSense"`
		} `json:"fields"`
	} `json:"IfcEdgeCurve"`
	IfcEdgeLoop struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			EdgeList struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EdgeList"`
			Ne struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Ne"`
		} `json:"fields"`
	} `json:"IfcEdgeLoop"`
	IfcElectricAppliance struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElectricAppliance"`
	IfcElectricApplianceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElectricApplianceType"`
	IfcElectricDistributionBoard struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElectricDistributionBoard"`
	IfcElectricDistributionBoardType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElectricDistributionBoardType"`
	IfcElectricFlowStorageDevice struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElectricFlowStorageDevice"`
	IfcElectricFlowStorageDeviceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElectricFlowStorageDeviceType"`
	IfcElectricGenerator struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElectricGenerator"`
	IfcElectricGeneratorType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElectricGeneratorType"`
	IfcElectricMotor struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElectricMotor"`
	IfcElectricMotorType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElectricMotorType"`
	IfcElectricTimeControl struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElectricTimeControl"`
	IfcElectricTimeControlType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElectricTimeControlType"`
	IfcElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Tag struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Tag"`
			FillsVoids struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FillsVoids"`
			ConnectedTo struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConnectedTo"`
			IsInterferedByElements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsInterferedByElements"`
			InterferesElements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InterferesElements"`
			HasProjections struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasProjections"`
			ReferencedInStructures struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferencedInStructures"`
			HasOpenings struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasOpenings"`
			IsConnectionRealization struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsConnectionRealization"`
			ProvidesBoundaries struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ProvidesBoundaries"`
			ConnectedFrom struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConnectedFrom"`
			ContainedInStructure struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ContainedInStructure"`
			HasCoverings struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasCoverings"`
		} `json:"fields"`
	} `json:"IfcElement"`
	IfcElementAssembly struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			AssemblyPlace struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AssemblyPlace"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElementAssembly"`
	IfcElementAssemblyType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcElementAssemblyType"`
	IfcElementComponent struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcElementComponent"`
	IfcElementComponentType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcElementComponentType"`
	IfcElementQuantity struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			MethodOfMeasurement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MethodOfMeasurement"`
			Quantities struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Quantities"`
		} `json:"fields"`
	} `json:"IfcElementQuantity"`
	IfcElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ElementType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ElementType"`
		} `json:"fields"`
	} `json:"IfcElementType"`
	IfcElementarySurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Position struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Position"`
		} `json:"fields"`
	} `json:"IfcElementarySurface"`
	IfcEllipse struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SemiAxis1 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SemiAxis1"`
			SemiAxis1AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SemiAxis1AsString"`
			SemiAxis2 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SemiAxis2"`
			SemiAxis2AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SemiAxis2AsString"`
		} `json:"fields"`
	} `json:"IfcEllipse"`
	IfcEllipseProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SemiAxis1 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SemiAxis1"`
			SemiAxis1AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SemiAxis1AsString"`
			SemiAxis2 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SemiAxis2"`
			SemiAxis2AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SemiAxis2AsString"`
		} `json:"fields"`
	} `json:"IfcEllipseProfileDef"`
	IfcEnergyConversionDevice struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcEnergyConversionDevice"`
	IfcEnergyConversionDeviceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcEnergyConversionDeviceType"`
	IfcEngine struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcEngine"`
	IfcEngineType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcEngineType"`
	IfcEvaporativeCooler struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcEvaporativeCooler"`
	IfcEvaporativeCoolerType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcEvaporativeCoolerType"`
	IfcEvaporator struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcEvaporator"`
	IfcEvaporatorType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcEvaporatorType"`
	IfcEvent struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			EventTriggerType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EventTriggerType"`
			UserDefinedEventTriggerType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedEventTriggerType"`
			EventOccurenceTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EventOccurenceTime"`
		} `json:"fields"`
	} `json:"IfcEvent"`
	IfcEventTime struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ActualDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ActualDate"`
			EarlyDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EarlyDate"`
			LateDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LateDate"`
			ScheduleDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ScheduleDate"`
		} `json:"fields"`
	} `json:"IfcEventTime"`
	IfcEventType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			EventTriggerType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EventTriggerType"`
			UserDefinedEventTriggerType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedEventTriggerType"`
		} `json:"fields"`
	} `json:"IfcEventType"`
	IfcExtendedProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			Properties struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Properties"`
		} `json:"fields"`
	} `json:"IfcExtendedProperties"`
	IfcExternalInformation struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcExternalInformation"`
	IfcExternalReference struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Location struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Location"`
			Identification struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identification"`
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			ExternalReferenceForResources struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ExternalReferenceForResources"`
		} `json:"fields"`
	} `json:"IfcExternalReference"`
	IfcExternalReferenceRelationship struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingReference struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingReference"`
			RelatedResourceObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedResourceObjects"`
		} `json:"fields"`
	} `json:"IfcExternalReferenceRelationship"`
	IfcExternalSpatialElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			BoundedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BoundedBy"`
		} `json:"fields"`
	} `json:"IfcExternalSpatialElement"`
	IfcExternalSpatialStructureElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcExternalSpatialStructureElement"`
	IfcExternallyDefinedHatchStyle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcExternallyDefinedHatchStyle"`
	IfcExternallyDefinedSurfaceStyle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcExternallyDefinedSurfaceStyle"`
	IfcExternallyDefinedTextFont struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcExternallyDefinedTextFont"`
	IfcExtrudedAreaSolid struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ExtrudedDirection struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ExtrudedDirection"`
			Depth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Depth"`
			DepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DepthAsString"`
		} `json:"fields"`
	} `json:"IfcExtrudedAreaSolid"`
	IfcExtrudedAreaSolidTapered struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			EndSweptArea struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EndSweptArea"`
		} `json:"fields"`
	} `json:"IfcExtrudedAreaSolidTapered"`
	IfcFace struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Bounds struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Bounds"`
			HasTextureMaps struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasTextureMaps"`
		} `json:"fields"`
	} `json:"IfcFace"`
	IfcFaceBasedSurfaceModel struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			FbsmFaces struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FbsmFaces"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcFaceBasedSurfaceModel"`
	IfcFaceBound struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Bound struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Bound"`
			Orientation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Orientation"`
		} `json:"fields"`
	} `json:"IfcFaceBound"`
	IfcFaceOuterBound struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFaceOuterBound"`
	IfcFaceSurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			FaceSurface struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FaceSurface"`
			SameSense struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SameSense"`
		} `json:"fields"`
	} `json:"IfcFaceSurface"`
	IfcFacetedBrep struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFacetedBrep"`
	IfcFacetedBrepWithVoids struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Voids struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Voids"`
		} `json:"fields"`
	} `json:"IfcFacetedBrepWithVoids"`
	IfcFailureConnectionCondition struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TensionFailureX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TensionFailureX"`
			TensionFailureXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TensionFailureXAsString"`
			TensionFailureY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TensionFailureY"`
			TensionFailureYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TensionFailureYAsString"`
			TensionFailureZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TensionFailureZ"`
			TensionFailureZAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TensionFailureZAsString"`
			CompressionFailureX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CompressionFailureX"`
			CompressionFailureXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CompressionFailureXAsString"`
			CompressionFailureY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CompressionFailureY"`
			CompressionFailureYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CompressionFailureYAsString"`
			CompressionFailureZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CompressionFailureZ"`
			CompressionFailureZAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CompressionFailureZAsString"`
		} `json:"fields"`
	} `json:"IfcFailureConnectionCondition"`
	IfcFan struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFan"`
	IfcFanType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFanType"`
	IfcFastener struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFastener"`
	IfcFastenerType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFastenerType"`
	IfcFeatureElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFeatureElement"`
	IfcFeatureElementAddition struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ProjectsElements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ProjectsElements"`
		} `json:"fields"`
	} `json:"IfcFeatureElementAddition"`
	IfcFeatureElementSubtraction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			VoidsElements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VoidsElements"`
		} `json:"fields"`
	} `json:"IfcFeatureElementSubtraction"`
	IfcFillAreaStyle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			FillStyles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FillStyles"`
			ModelorDraughting struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ModelorDraughting"`
		} `json:"fields"`
	} `json:"IfcFillAreaStyle"`
	IfcFillAreaStyleHatching struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			HatchLineAppearance struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HatchLineAppearance"`
			StartOfNextHatchLine struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StartOfNextHatchLine"`
			PointOfReferenceHatchLine struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PointOfReferenceHatchLine"`
			PatternStart struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PatternStart"`
			HatchLineAngle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HatchLineAngle"`
			HatchLineAngleAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HatchLineAngleAsString"`
		} `json:"fields"`
	} `json:"IfcFillAreaStyleHatching"`
	IfcFillAreaStyleTiles struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TilingPattern struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TilingPattern"`
			Tiles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Tiles"`
			TilingScale struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TilingScale"`
			TilingScaleAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TilingScaleAsString"`
		} `json:"fields"`
	} `json:"IfcFillAreaStyleTiles"`
	IfcFilter struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFilter"`
	IfcFilterType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFilterType"`
	IfcFireSuppressionTerminal struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFireSuppressionTerminal"`
	IfcFireSuppressionTerminalType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFireSuppressionTerminalType"`
	IfcFixedReferenceSweptAreaSolid struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Directrix struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Directrix"`
			StartParam struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StartParam"`
			StartParamAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StartParamAsString"`
			EndParam struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EndParam"`
			EndParamAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EndParamAsString"`
			FixedReference struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FixedReference"`
		} `json:"fields"`
	} `json:"IfcFixedReferenceSweptAreaSolid"`
	IfcFlowController struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowController"`
	IfcFlowControllerType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowControllerType"`
	IfcFlowFitting struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowFitting"`
	IfcFlowFittingType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowFittingType"`
	IfcFlowInstrument struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFlowInstrument"`
	IfcFlowInstrumentType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFlowInstrumentType"`
	IfcFlowMeter struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFlowMeter"`
	IfcFlowMeterType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFlowMeterType"`
	IfcFlowMovingDevice struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowMovingDevice"`
	IfcFlowMovingDeviceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowMovingDeviceType"`
	IfcFlowSegment struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowSegment"`
	IfcFlowSegmentType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowSegmentType"`
	IfcFlowStorageDevice struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowStorageDevice"`
	IfcFlowStorageDeviceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowStorageDeviceType"`
	IfcFlowTerminal struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowTerminal"`
	IfcFlowTerminalType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowTerminalType"`
	IfcFlowTreatmentDevice struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowTreatmentDevice"`
	IfcFlowTreatmentDeviceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFlowTreatmentDeviceType"`
	IfcFooting struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFooting"`
	IfcFootingType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFootingType"`
	IfcFurnishingElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFurnishingElement"`
	IfcFurnishingElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFurnishingElementType"`
	IfcFurniture struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFurniture"`
	IfcFurnitureType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			AssemblyPlace struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AssemblyPlace"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcFurnitureType"`
	IfcGeographicElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcGeographicElement"`
	IfcGeographicElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcGeographicElementType"`
	IfcGeometricCurveSet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcGeometricCurveSet"`
	IfcGeometricRepresentationContext struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			CoordinateSpaceDimension struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CoordinateSpaceDimension"`
			Precision struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Precision"`
			PrecisionAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PrecisionAsString"`
			WorldCoordinateSystem struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WorldCoordinateSystem"`
			TrueNorth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TrueNorth"`
			HasSubContexts struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasSubContexts"`
			HasCoordinateOperation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasCoordinateOperation"`
		} `json:"fields"`
	} `json:"IfcGeometricRepresentationContext"`
	IfcGeometricRepresentationItem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcGeometricRepresentationItem"`
	IfcGeometricRepresentationSubContext struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ParentContext struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ParentContext"`
			TargetScale struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TargetScale"`
			TargetScaleAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TargetScaleAsString"`
			TargetView struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TargetView"`
			UserDefinedTargetView struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedTargetView"`
		} `json:"fields"`
	} `json:"IfcGeometricRepresentationSubContext"`
	IfcGeometricSet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Elements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Elements"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcGeometricSet"`
	IfcGrid struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			UAxes struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UAxes"`
			VAxes struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VAxes"`
			WAxes struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WAxes"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			ContainedInStructure struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ContainedInStructure"`
		} `json:"fields"`
	} `json:"IfcGrid"`
	IfcGridAxis struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			AxisTag struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AxisTag"`
			AxisCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AxisCurve"`
			SameSense struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SameSense"`
			PartOfW struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PartOfW"`
			PartOfV struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PartOfV"`
			PartOfU struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PartOfU"`
			HasIntersections struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasIntersections"`
		} `json:"fields"`
	} `json:"IfcGridAxis"`
	IfcGridPlacement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PlacementLocation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PlacementLocation"`
			PlacementRefDirection struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PlacementRefDirection"`
		} `json:"fields"`
	} `json:"IfcGridPlacement"`
	IfcGroup struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			IsGroupedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsGroupedBy"`
		} `json:"fields"`
	} `json:"IfcGroup"`
	IfcHalfSpaceSolid struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BaseSurface struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BaseSurface"`
			AgreementFlag struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AgreementFlag"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcHalfSpaceSolid"`
	IfcHeatExchanger struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcHeatExchanger"`
	IfcHeatExchangerType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcHeatExchangerType"`
	IfcHumidifier struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcHumidifier"`
	IfcHumidifierType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcHumidifierType"`
	IfcIShapeProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			OverallWidth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallWidth"`
			OverallWidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallWidthAsString"`
			OverallDepth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallDepth"`
			OverallDepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallDepthAsString"`
			WebThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebThickness"`
			WebThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebThicknessAsString"`
			FlangeThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeThickness"`
			FlangeThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeThicknessAsString"`
			FilletRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FilletRadius"`
			FilletRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FilletRadiusAsString"`
			FlangeEdgeRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeEdgeRadius"`
			FlangeEdgeRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeEdgeRadiusAsString"`
			FlangeSlope struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeSlope"`
			FlangeSlopeAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeSlopeAsString"`
		} `json:"fields"`
	} `json:"IfcIShapeProfileDef"`
	IfcImageTexture struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			URLReference struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"URLReference"`
		} `json:"fields"`
	} `json:"IfcImageTexture"`
	IfcIndexedColourMap struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			MappedTo struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MappedTo"`
			Opacity struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Opacity"`
			OpacityAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OpacityAsString"`
			Colours struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Colours"`
			ColourIndex struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ColourIndex"`
		} `json:"fields"`
	} `json:"IfcIndexedColourMap"`
	IfcIndexedPolyCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Points struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Points"`
			Segments struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Segments"`
			SelfIntersect struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SelfIntersect"`
		} `json:"fields"`
	} `json:"IfcIndexedPolyCurve"`
	IfcIndexedPolygonalFace struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			CoordIndex struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CoordIndex"`
			ToFaceSet struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ToFaceSet"`
		} `json:"fields"`
	} `json:"IfcIndexedPolygonalFace"`
	IfcIndexedPolygonalFaceWithVoids struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			InnerCoordIndices struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InnerCoordIndices"`
		} `json:"fields"`
	} `json:"IfcIndexedPolygonalFaceWithVoids"`
	IfcIndexedTextureMap struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			MappedTo struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MappedTo"`
			TexCoords struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TexCoords"`
		} `json:"fields"`
	} `json:"IfcIndexedTextureMap"`
	IfcIndexedTriangleTextureMap struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TexCoordIndex struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TexCoordIndex"`
		} `json:"fields"`
	} `json:"IfcIndexedTriangleTextureMap"`
	IfcInterceptor struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcInterceptor"`
	IfcInterceptorType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcInterceptorType"`
	IfcIntersectionCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcIntersectionCurve"`
	IfcInventory struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			Jurisdiction struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Jurisdiction"`
			ResponsiblePersons struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ResponsiblePersons"`
			LastUpdateDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LastUpdateDate"`
			CurrentValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CurrentValue"`
			OriginalValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OriginalValue"`
		} `json:"fields"`
	} `json:"IfcInventory"`
	IfcIrregularTimeSeries struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Values struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Values"`
		} `json:"fields"`
	} `json:"IfcIrregularTimeSeries"`
	IfcIrregularTimeSeriesValue struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			TimeStamp struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TimeStamp"`
			ListValues struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ListValues"`
		} `json:"fields"`
	} `json:"IfcIrregularTimeSeriesValue"`
	IfcJunctionBox struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcJunctionBox"`
	IfcJunctionBoxType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcJunctionBoxType"`
	IfcLShapeProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Depth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Depth"`
			DepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DepthAsString"`
			Width struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Width"`
			WidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WidthAsString"`
			Thickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Thickness"`
			ThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ThicknessAsString"`
			FilletRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FilletRadius"`
			FilletRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FilletRadiusAsString"`
			EdgeRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EdgeRadius"`
			EdgeRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EdgeRadiusAsString"`
			LegSlope struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LegSlope"`
			LegSlopeAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LegSlopeAsString"`
		} `json:"fields"`
	} `json:"IfcLShapeProfileDef"`
	IfcLaborResource struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcLaborResource"`
	IfcLaborResourceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcLaborResourceType"`
	IfcLagTime struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LagValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LagValue"`
			DurationType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DurationType"`
		} `json:"fields"`
	} `json:"IfcLagTime"`
	IfcLamp struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcLamp"`
	IfcLampType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcLampType"`
	IfcLibraryInformation struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Version struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Version"`
			Publisher struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Publisher"`
			VersionDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VersionDate"`
			Location struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Location"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			LibraryInfoForObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LibraryInfoForObjects"`
			HasLibraryReferences struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasLibraryReferences"`
		} `json:"fields"`
	} `json:"IfcLibraryInformation"`
	IfcLibraryReference struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			Language struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Language"`
			ReferencedLibrary struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferencedLibrary"`
			LibraryRefForObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LibraryRefForObjects"`
		} `json:"fields"`
	} `json:"IfcLibraryReference"`
	IfcLightDistributionData struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			MainPlaneAngle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MainPlaneAngle"`
			MainPlaneAngleAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MainPlaneAngleAsString"`
			SecondaryPlaneAngle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SecondaryPlaneAngle"`
			SecondaryPlaneAngleAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SecondaryPlaneAngleAsString"`
			LuminousIntensity struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LuminousIntensity"`
			LuminousIntensityAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LuminousIntensityAsString"`
		} `json:"fields"`
	} `json:"IfcLightDistributionData"`
	IfcLightFixture struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcLightFixture"`
	IfcLightFixtureType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcLightFixtureType"`
	IfcLightIntensityDistribution struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LightDistributionCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LightDistributionCurve"`
			DistributionData struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DistributionData"`
		} `json:"fields"`
	} `json:"IfcLightIntensityDistribution"`
	IfcLightSource struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			LightColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LightColour"`
			AmbientIntensity struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AmbientIntensity"`
			AmbientIntensityAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AmbientIntensityAsString"`
			Intensity struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Intensity"`
			IntensityAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IntensityAsString"`
		} `json:"fields"`
	} `json:"IfcLightSource"`
	IfcLightSourceAmbient struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcLightSourceAmbient"`
	IfcLightSourceDirectional struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Orientation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Orientation"`
		} `json:"fields"`
	} `json:"IfcLightSourceDirectional"`
	IfcLightSourceGoniometric struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Position struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Position"`
			ColourAppearance struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ColourAppearance"`
			ColourTemperature struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ColourTemperature"`
			ColourTemperatureAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ColourTemperatureAsString"`
			LuminousFlux struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LuminousFlux"`
			LuminousFluxAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LuminousFluxAsString"`
			LightEmissionSource struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LightEmissionSource"`
			LightDistributionDataSource struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LightDistributionDataSource"`
		} `json:"fields"`
	} `json:"IfcLightSourceGoniometric"`
	IfcLightSourcePositional struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Position struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Position"`
			Radius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Radius"`
			RadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RadiusAsString"`
			ConstantAttenuation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConstantAttenuation"`
			ConstantAttenuationAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConstantAttenuationAsString"`
			DistanceAttenuation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DistanceAttenuation"`
			DistanceAttenuationAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DistanceAttenuationAsString"`
			QuadricAttenuation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"QuadricAttenuation"`
			QuadricAttenuationAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"QuadricAttenuationAsString"`
		} `json:"fields"`
	} `json:"IfcLightSourcePositional"`
	IfcLightSourceSpot struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Orientation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Orientation"`
			ConcentrationExponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConcentrationExponent"`
			ConcentrationExponentAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConcentrationExponentAsString"`
			SpreadAngle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SpreadAngle"`
			SpreadAngleAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SpreadAngleAsString"`
			BeamWidthAngle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BeamWidthAngle"`
			BeamWidthAngleAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BeamWidthAngleAsString"`
		} `json:"fields"`
	} `json:"IfcLightSourceSpot"`
	IfcLine struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Pnt struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Pnt"`
			Dir struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dir"`
		} `json:"fields"`
	} `json:"IfcLine"`
	IfcLocalPlacement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PlacementRelTo struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PlacementRelTo"`
			RelativePlacement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelativePlacement"`
		} `json:"fields"`
	} `json:"IfcLocalPlacement"`
	IfcLoop struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcLoop"`
	IfcManifoldSolidBrep struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Outer struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Outer"`
		} `json:"fields"`
	} `json:"IfcManifoldSolidBrep"`
	IfcMapConversion struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Eastings struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Eastings"`
			EastingsAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EastingsAsString"`
			Northings struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Northings"`
			NorthingsAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NorthingsAsString"`
			OrthogonalHeight struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OrthogonalHeight"`
			OrthogonalHeightAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OrthogonalHeightAsString"`
			XAxisAbscissa struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"XAxisAbscissa"`
			XAxisAbscissaAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"XAxisAbscissaAsString"`
			XAxisOrdinate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"XAxisOrdinate"`
			XAxisOrdinateAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"XAxisOrdinateAsString"`
			Scale struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Scale"`
			ScaleAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ScaleAsString"`
		} `json:"fields"`
	} `json:"IfcMapConversion"`
	IfcMappedItem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			MappingSource struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MappingSource"`
			MappingTarget struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MappingTarget"`
		} `json:"fields"`
	} `json:"IfcMappedItem"`
	IfcMaterial struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			Category struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Category"`
			HasRepresentation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasRepresentation"`
			IsRelatedWith struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsRelatedWith"`
			RelatesTo struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatesTo"`
		} `json:"fields"`
	} `json:"IfcMaterial"`
	IfcMaterialClassificationRelationship struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			MaterialClassifications struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MaterialClassifications"`
			ClassifiedMaterial struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ClassifiedMaterial"`
		} `json:"fields"`
	} `json:"IfcMaterialClassificationRelationship"`
	IfcMaterialConstituent struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			Material struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Material"`
			Fraction struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Fraction"`
			FractionAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FractionAsString"`
			Category struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Category"`
			ToMaterialConstituentSet struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ToMaterialConstituentSet"`
		} `json:"fields"`
	} `json:"IfcMaterialConstituent"`
	IfcMaterialConstituentSet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			MaterialConstituents struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MaterialConstituents"`
		} `json:"fields"`
	} `json:"IfcMaterialConstituentSet"`
	IfcMaterialDefinition struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			AssociatedTo struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AssociatedTo"`
			HasExternalReferences struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasExternalReferences"`
			HasProperties struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasProperties"`
		} `json:"fields"`
	} `json:"IfcMaterialDefinition"`
	IfcMaterialDefinitionRepresentation struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RepresentedMaterial struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RepresentedMaterial"`
		} `json:"fields"`
	} `json:"IfcMaterialDefinitionRepresentation"`
	IfcMaterialLayer struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Material struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Material"`
			LayerThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LayerThickness"`
			LayerThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LayerThicknessAsString"`
			IsVentilated struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsVentilated"`
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			Category struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Category"`
			Priority struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Priority"`
			ToMaterialLayerSet struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ToMaterialLayerSet"`
		} `json:"fields"`
	} `json:"IfcMaterialLayer"`
	IfcMaterialLayerSet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			MaterialLayers struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MaterialLayers"`
			LayerSetName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LayerSetName"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			TotalThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TotalThickness"`
			TotalThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TotalThicknessAsString"`
		} `json:"fields"`
	} `json:"IfcMaterialLayerSet"`
	IfcMaterialLayerSetUsage struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ForLayerSet struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ForLayerSet"`
			LayerSetDirection struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LayerSetDirection"`
			DirectionSense struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DirectionSense"`
			OffsetFromReferenceLine struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OffsetFromReferenceLine"`
			OffsetFromReferenceLineAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OffsetFromReferenceLineAsString"`
			ReferenceExtent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferenceExtent"`
			ReferenceExtentAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferenceExtentAsString"`
		} `json:"fields"`
	} `json:"IfcMaterialLayerSetUsage"`
	IfcMaterialLayerWithOffsets struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			OffsetDirection struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OffsetDirection"`
			OffsetValues struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OffsetValues"`
			OffsetValuesAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OffsetValuesAsString"`
		} `json:"fields"`
	} `json:"IfcMaterialLayerWithOffsets"`
	IfcMaterialList struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Materials struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Materials"`
		} `json:"fields"`
	} `json:"IfcMaterialList"`
	IfcMaterialProfile struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			Material struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Material"`
			Profile struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Profile"`
			Priority struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Priority"`
			Category struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Category"`
			ToMaterialProfileSet struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ToMaterialProfileSet"`
		} `json:"fields"`
	} `json:"IfcMaterialProfile"`
	IfcMaterialProfileSet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			MaterialProfiles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MaterialProfiles"`
			CompositeProfile struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CompositeProfile"`
		} `json:"fields"`
	} `json:"IfcMaterialProfileSet"`
	IfcMaterialProfileSetUsage struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ForProfileSet struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ForProfileSet"`
			CardinalPoint struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CardinalPoint"`
			ReferenceExtent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferenceExtent"`
			ReferenceExtentAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferenceExtentAsString"`
		} `json:"fields"`
	} `json:"IfcMaterialProfileSetUsage"`
	IfcMaterialProfileSetUsageTapering struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ForProfileEndSet struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ForProfileEndSet"`
			CardinalEndPoint struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CardinalEndPoint"`
		} `json:"fields"`
	} `json:"IfcMaterialProfileSetUsageTapering"`
	IfcMaterialProfileWithOffsets struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			OffsetValues struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OffsetValues"`
			OffsetValuesAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OffsetValuesAsString"`
		} `json:"fields"`
	} `json:"IfcMaterialProfileWithOffsets"`
	IfcMaterialProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Material struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Material"`
		} `json:"fields"`
	} `json:"IfcMaterialProperties"`
	IfcMaterialRelationship struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingMaterial struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingMaterial"`
			RelatedMaterials struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedMaterials"`
			Expression struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Expression"`
		} `json:"fields"`
	} `json:"IfcMaterialRelationship"`
	IfcMaterialUsageDefinition struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			AssociatedTo struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AssociatedTo"`
		} `json:"fields"`
	} `json:"IfcMaterialUsageDefinition"`
	IfcMeasureWithUnit struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ValueComponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ValueComponent"`
			UnitComponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UnitComponent"`
		} `json:"fields"`
	} `json:"IfcMeasureWithUnit"`
	IfcMechanicalFastener struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			NominalDiameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalDiameter"`
			NominalDiameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalDiameterAsString"`
			NominalLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalLength"`
			NominalLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalLengthAsString"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcMechanicalFastener"`
	IfcMechanicalFastenerType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			NominalDiameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalDiameter"`
			NominalDiameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalDiameterAsString"`
			NominalLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalLength"`
			NominalLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalLengthAsString"`
		} `json:"fields"`
	} `json:"IfcMechanicalFastenerType"`
	IfcMedicalDevice struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcMedicalDevice"`
	IfcMedicalDeviceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcMedicalDeviceType"`
	IfcMember struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcMember"`
	IfcMemberStandardCase struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcMemberStandardCase"`
	IfcMemberType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcMemberType"`
	IfcMetric struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Benchmark struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Benchmark"`
			ValueSource struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ValueSource"`
			DataValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DataValue"`
			ReferencePath struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferencePath"`
		} `json:"fields"`
	} `json:"IfcMetric"`
	IfcMirroredProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcMirroredProfileDef"`
	IfcMonetaryUnit struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Currency struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Currency"`
		} `json:"fields"`
	} `json:"IfcMonetaryUnit"`
	IfcMotorConnection struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcMotorConnection"`
	IfcMotorConnectionType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcMotorConnectionType"`
	IfcNamedUnit struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Dimensions struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dimensions"`
			UnitType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UnitType"`
		} `json:"fields"`
	} `json:"IfcNamedUnit"`
	IfcObject struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ObjectType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ObjectType"`
			IsDeclaredBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsDeclaredBy"`
			Declares struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Declares"`
			IsTypedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsTypedBy"`
			IsDefinedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsDefinedBy"`
		} `json:"fields"`
	} `json:"IfcObject"`
	IfcObjectDefinition struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			HasAssignments struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasAssignments"`
			Nests struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Nests"`
			IsNestedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsNestedBy"`
			HasContext struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasContext"`
			IsDecomposedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsDecomposedBy"`
			Decomposes struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Decomposes"`
			HasAssociations struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasAssociations"`
		} `json:"fields"`
	} `json:"IfcObjectDefinition"`
	IfcObjectPlacement struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			PlacesObject struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PlacesObject"`
			ReferencedByPlacements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferencedByPlacements"`
		} `json:"fields"`
	} `json:"IfcObjectPlacement"`
	IfcObjective struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BenchmarkValues struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BenchmarkValues"`
			LogicalAggregator struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LogicalAggregator"`
			ObjectiveQualifier struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ObjectiveQualifier"`
			UserDefinedQualifier struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedQualifier"`
		} `json:"fields"`
	} `json:"IfcObjective"`
	IfcOccupant struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcOccupant"`
	IfcOffsetCurve2D struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BasisCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BasisCurve"`
			Distance struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Distance"`
			DistanceAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DistanceAsString"`
			SelfIntersect struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SelfIntersect"`
		} `json:"fields"`
	} `json:"IfcOffsetCurve2D"`
	IfcOffsetCurve3D struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BasisCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BasisCurve"`
			Distance struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Distance"`
			DistanceAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DistanceAsString"`
			SelfIntersect struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SelfIntersect"`
			RefDirection struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RefDirection"`
		} `json:"fields"`
	} `json:"IfcOffsetCurve3D"`
	IfcOpenShell struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcOpenShell"`
	IfcOpeningElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			HasFillings struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasFillings"`
		} `json:"fields"`
	} `json:"IfcOpeningElement"`
	IfcOpeningStandardCase struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcOpeningStandardCase"`
	IfcOrganization struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Identification struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identification"`
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			Roles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Roles"`
			Addresses struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Addresses"`
			IsRelatedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsRelatedBy"`
			Relates struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Relates"`
			Engages struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Engages"`
		} `json:"fields"`
	} `json:"IfcOrganization"`
	IfcOrganizationRelationship struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingOrganization struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingOrganization"`
			RelatedOrganizations struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedOrganizations"`
		} `json:"fields"`
	} `json:"IfcOrganizationRelationship"`
	IfcOrientedEdge struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			EdgeElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EdgeElement"`
			Orientation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Orientation"`
		} `json:"fields"`
	} `json:"IfcOrientedEdge"`
	IfcOuterBoundaryCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcOuterBoundaryCurve"`
	IfcOutlet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcOutlet"`
	IfcOutletType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcOutletType"`
	IfcOwnerHistory struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			OwningUser struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OwningUser"`
			OwningApplication struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OwningApplication"`
			State struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"State"`
			ChangeAction struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ChangeAction"`
			LastModifiedDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LastModifiedDate"`
			LastModifyingUser struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LastModifyingUser"`
			LastModifyingApplication struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LastModifyingApplication"`
			CreationDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CreationDate"`
		} `json:"fields"`
	} `json:"IfcOwnerHistory"`
	IfcParameterizedProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Position struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Position"`
		} `json:"fields"`
	} `json:"IfcParameterizedProfileDef"`
	IfcPath struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			EdgeList struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EdgeList"`
		} `json:"fields"`
	} `json:"IfcPath"`
	IfcPcurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BasisSurface struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BasisSurface"`
			ReferenceCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferenceCurve"`
		} `json:"fields"`
	} `json:"IfcPcurve"`
	IfcPerformanceHistory struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LifeCyclePhase struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LifeCyclePhase"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcPerformanceHistory"`
	IfcPermeableCoveringProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			OperationType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OperationType"`
			PanelPosition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PanelPosition"`
			FrameDepth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FrameDepth"`
			FrameDepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FrameDepthAsString"`
			FrameThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FrameThickness"`
			FrameThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FrameThicknessAsString"`
			ShapeAspectStyle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ShapeAspectStyle"`
		} `json:"fields"`
	} `json:"IfcPermeableCoveringProperties"`
	IfcPermit struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			Status struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Status"`
			LongDescription struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongDescription"`
		} `json:"fields"`
	} `json:"IfcPermit"`
	IfcPerson struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Identification struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identification"`
			FamilyName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FamilyName"`
			GivenName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"GivenName"`
			MiddleNames struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MiddleNames"`
			PrefixTitles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PrefixTitles"`
			SuffixTitles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SuffixTitles"`
			Roles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Roles"`
			Addresses struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Addresses"`
			EngagedIn struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EngagedIn"`
		} `json:"fields"`
	} `json:"IfcPerson"`
	IfcPersonAndOrganization struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ThePerson struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ThePerson"`
			TheOrganization struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TheOrganization"`
			Roles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Roles"`
		} `json:"fields"`
	} `json:"IfcPersonAndOrganization"`
	IfcPhysicalComplexQuantity struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			HasQuantities struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasQuantities"`
			Discrimination struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Discrimination"`
			Quality struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Quality"`
			Usage struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Usage"`
		} `json:"fields"`
	} `json:"IfcPhysicalComplexQuantity"`
	IfcPhysicalQuantity struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			HasExternalReferences struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasExternalReferences"`
			PartOfComplex struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PartOfComplex"`
		} `json:"fields"`
	} `json:"IfcPhysicalQuantity"`
	IfcPhysicalSimpleQuantity struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Unit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Unit"`
		} `json:"fields"`
	} `json:"IfcPhysicalSimpleQuantity"`
	IfcPile struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			ConstructionType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConstructionType"`
		} `json:"fields"`
	} `json:"IfcPile"`
	IfcPileType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcPileType"`
	IfcPipeFitting struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcPipeFitting"`
	IfcPipeFittingType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcPipeFittingType"`
	IfcPipeSegment struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcPipeSegment"`
	IfcPipeSegmentType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcPipeSegmentType"`
	IfcPixelTexture struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Width struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Width"`
			Height struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Height"`
			ColourComponents struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ColourComponents"`
			Pixel struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Pixel"`
		} `json:"fields"`
	} `json:"IfcPixelTexture"`
	IfcPlacement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Location struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Location"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcPlacement"`
	IfcPlanarBox struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Placement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Placement"`
		} `json:"fields"`
	} `json:"IfcPlanarBox"`
	IfcPlanarExtent struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SizeInX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SizeInX"`
			SizeInXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SizeInXAsString"`
			SizeInY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SizeInY"`
			SizeInYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SizeInYAsString"`
		} `json:"fields"`
	} `json:"IfcPlanarExtent"`
	IfcPlane struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPlane"`
	IfcPlate struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcPlate"`
	IfcPlateStandardCase struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPlateStandardCase"`
	IfcPlateType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcPlateType"`
	IfcPoint struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPoint"`
	IfcPointOnCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BasisCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BasisCurve"`
			PointParameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PointParameter"`
			PointParameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PointParameterAsString"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcPointOnCurve"`
	IfcPointOnSurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BasisSurface struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BasisSurface"`
			PointParameterU struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PointParameterU"`
			PointParameterUAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PointParameterUAsString"`
			PointParameterV struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PointParameterV"`
			PointParameterVAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PointParameterVAsString"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcPointOnSurface"`
	IfcPolyLoop struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Polygon struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Polygon"`
		} `json:"fields"`
	} `json:"IfcPolyLoop"`
	IfcPolygonalBoundedHalfSpace struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Position struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Position"`
			PolygonalBoundary struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PolygonalBoundary"`
		} `json:"fields"`
	} `json:"IfcPolygonalBoundedHalfSpace"`
	IfcPolygonalFaceSet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Closed struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Closed"`
			Faces struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Faces"`
			PnIndex struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PnIndex"`
		} `json:"fields"`
	} `json:"IfcPolygonalFaceSet"`
	IfcPolyline struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Points struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Points"`
		} `json:"fields"`
	} `json:"IfcPolyline"`
	IfcPort struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ContainedIn struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ContainedIn"`
			ConnectedFrom struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConnectedFrom"`
			ConnectedTo struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConnectedTo"`
		} `json:"fields"`
	} `json:"IfcPort"`
	IfcPostalAddress struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			InternalLocation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InternalLocation"`
			AddressLines struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AddressLines"`
			PostalBox struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PostalBox"`
			Town struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Town"`
			Region struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Region"`
			PostalCode struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PostalCode"`
			Country struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Country"`
		} `json:"fields"`
	} `json:"IfcPostalAddress"`
	IfcPreDefinedColour struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPreDefinedColour"`
	IfcPreDefinedCurveFont struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPreDefinedCurveFont"`
	IfcPreDefinedItem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
		} `json:"fields"`
	} `json:"IfcPreDefinedItem"`
	IfcPreDefinedProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPreDefinedProperties"`
	IfcPreDefinedPropertySet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPreDefinedPropertySet"`
	IfcPreDefinedTextFont struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPreDefinedTextFont"`
	IfcPresentationItem struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPresentationItem"`
	IfcPresentationLayerAssignment struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			AssignedItems struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AssignedItems"`
			Identifier struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identifier"`
		} `json:"fields"`
	} `json:"IfcPresentationLayerAssignment"`
	IfcPresentationLayerWithStyle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LayerOn struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LayerOn"`
			LayerFrozen struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LayerFrozen"`
			LayerBlocked struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LayerBlocked"`
			LayerStyles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LayerStyles"`
		} `json:"fields"`
	} `json:"IfcPresentationLayerWithStyle"`
	IfcPresentationStyle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
		} `json:"fields"`
	} `json:"IfcPresentationStyle"`
	IfcPresentationStyleAssignment struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Styles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Styles"`
		} `json:"fields"`
	} `json:"IfcPresentationStyleAssignment"`
	IfcProcedure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcProcedure"`
	IfcProcedureType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcProcedureType"`
	IfcProcess struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Identification struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identification"`
			LongDescription struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongDescription"`
			IsPredecessorTo struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsPredecessorTo"`
			IsSuccessorFrom struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsSuccessorFrom"`
			OperatesOn struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OperatesOn"`
		} `json:"fields"`
	} `json:"IfcProcess"`
	IfcProduct struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ObjectPlacement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ObjectPlacement"`
			Representation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Representation"`
			ReferencedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferencedBy"`
			Geometry struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"geometry"`
		} `json:"fields"`
	} `json:"IfcProduct"`
	IfcProductDefinitionShape struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ShapeOfProduct struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ShapeOfProduct"`
			HasShapeAspects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasShapeAspects"`
		} `json:"fields"`
	} `json:"IfcProductDefinitionShape"`
	IfcProductRepresentation struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			Representations struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Representations"`
		} `json:"fields"`
	} `json:"IfcProductRepresentation"`
	IfcProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ProfileType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ProfileType"`
			ProfileName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ProfileName"`
			HasExternalReference struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasExternalReference"`
			HasProperties struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasProperties"`
		} `json:"fields"`
	} `json:"IfcProfileDef"`
	IfcProfileProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ProfileDefinition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ProfileDefinition"`
		} `json:"fields"`
	} `json:"IfcProfileProperties"`
	IfcProject struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcProject"`
	IfcProjectLibrary struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcProjectLibrary"`
	IfcProjectOrder struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			Status struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Status"`
			LongDescription struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongDescription"`
		} `json:"fields"`
	} `json:"IfcProjectOrder"`
	IfcProjectedCRS struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			MapProjection struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MapProjection"`
			MapZone struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MapZone"`
			MapUnit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MapUnit"`
		} `json:"fields"`
	} `json:"IfcProjectedCRS"`
	IfcProjectionElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcProjectionElement"`
	IfcProperty struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			PartOfPset struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PartOfPset"`
			PropertyForDependance struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PropertyForDependance"`
			PropertyDependsOn struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PropertyDependsOn"`
			PartOfComplex struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PartOfComplex"`
			HasConstraints struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasConstraints"`
			HasApprovals struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasApprovals"`
		} `json:"fields"`
	} `json:"IfcProperty"`
	IfcPropertyAbstraction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			HasExternalReferences struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasExternalReferences"`
		} `json:"fields"`
	} `json:"IfcPropertyAbstraction"`
	IfcPropertyBoundedValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			UpperBoundValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UpperBoundValue"`
			LowerBoundValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LowerBoundValue"`
			Unit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Unit"`
			SetPointValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SetPointValue"`
		} `json:"fields"`
	} `json:"IfcPropertyBoundedValue"`
	IfcPropertyDefinition struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			HasContext struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasContext"`
			HasAssociations struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasAssociations"`
		} `json:"fields"`
	} `json:"IfcPropertyDefinition"`
	IfcPropertyDependencyRelationship struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			DependingProperty struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DependingProperty"`
			DependantProperty struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DependantProperty"`
			Expression struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Expression"`
		} `json:"fields"`
	} `json:"IfcPropertyDependencyRelationship"`
	IfcPropertyEnumeratedValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			EnumerationValues struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EnumerationValues"`
			EnumerationReference struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EnumerationReference"`
		} `json:"fields"`
	} `json:"IfcPropertyEnumeratedValue"`
	IfcPropertyEnumeration struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			EnumerationValues struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EnumerationValues"`
			Unit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Unit"`
		} `json:"fields"`
	} `json:"IfcPropertyEnumeration"`
	IfcPropertyListValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ListValues struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ListValues"`
			Unit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Unit"`
		} `json:"fields"`
	} `json:"IfcPropertyListValue"`
	IfcPropertyReferenceValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			UsageName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UsageName"`
			PropertyReference struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PropertyReference"`
		} `json:"fields"`
	} `json:"IfcPropertyReferenceValue"`
	IfcPropertySet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			HasProperties struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasProperties"`
		} `json:"fields"`
	} `json:"IfcPropertySet"`
	IfcPropertySetDefinition struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			DefinesType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DefinesType"`
			IsDefinedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsDefinedBy"`
			DefinesOccurrence struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DefinesOccurrence"`
		} `json:"fields"`
	} `json:"IfcPropertySetDefinition"`
	IfcPropertySetTemplate struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TemplateType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TemplateType"`
			ApplicableEntity struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ApplicableEntity"`
			HasPropertyTemplates struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasPropertyTemplates"`
			Defines struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Defines"`
		} `json:"fields"`
	} `json:"IfcPropertySetTemplate"`
	IfcPropertySingleValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			NominalValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalValue"`
			Unit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Unit"`
		} `json:"fields"`
	} `json:"IfcPropertySingleValue"`
	IfcPropertyTableValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			DefiningValues struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DefiningValues"`
			DefinedValues struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DefinedValues"`
			Expression struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Expression"`
			DefiningUnit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DefiningUnit"`
			DefinedUnit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DefinedUnit"`
			CurveInterpolation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CurveInterpolation"`
		} `json:"fields"`
	} `json:"IfcPropertyTableValue"`
	IfcPropertyTemplate struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PartOfComplexTemplate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PartOfComplexTemplate"`
			PartOfPsetTemplate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PartOfPsetTemplate"`
		} `json:"fields"`
	} `json:"IfcPropertyTemplate"`
	IfcPropertyTemplateDefinition struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPropertyTemplateDefinition"`
	IfcProtectiveDevice struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcProtectiveDevice"`
	IfcProtectiveDeviceTrippingUnit struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcProtectiveDeviceTrippingUnit"`
	IfcProtectiveDeviceTrippingUnitType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcProtectiveDeviceTrippingUnitType"`
	IfcProtectiveDeviceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcProtectiveDeviceType"`
	IfcProxy struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ProxyType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ProxyType"`
			Tag struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Tag"`
		} `json:"fields"`
	} `json:"IfcProxy"`
	IfcPump struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcPump"`
	IfcPumpType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcPumpType"`
	IfcQuantityArea struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			AreaValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AreaValue"`
			AreaValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AreaValueAsString"`
			Formula struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Formula"`
		} `json:"fields"`
	} `json:"IfcQuantityArea"`
	IfcQuantityCount struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			CountValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CountValue"`
			CountValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CountValueAsString"`
			Formula struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Formula"`
		} `json:"fields"`
	} `json:"IfcQuantityCount"`
	IfcQuantityLength struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LengthValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LengthValue"`
			LengthValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LengthValueAsString"`
			Formula struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Formula"`
		} `json:"fields"`
	} `json:"IfcQuantityLength"`
	IfcQuantitySet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcQuantitySet"`
	IfcQuantityTime struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TimeValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TimeValue"`
			TimeValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TimeValueAsString"`
			Formula struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Formula"`
		} `json:"fields"`
	} `json:"IfcQuantityTime"`
	IfcQuantityVolume struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			VolumeValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VolumeValue"`
			VolumeValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VolumeValueAsString"`
			Formula struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Formula"`
		} `json:"fields"`
	} `json:"IfcQuantityVolume"`
	IfcQuantityWeight struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WeightValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WeightValue"`
			WeightValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WeightValueAsString"`
			Formula struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Formula"`
		} `json:"fields"`
	} `json:"IfcQuantityWeight"`
	IfcRailing struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcRailing"`
	IfcRailingType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcRailingType"`
	IfcRamp struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcRamp"`
	IfcRampFlight struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcRampFlight"`
	IfcRampFlightType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcRampFlightType"`
	IfcRampType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcRampType"`
	IfcRationalBSplineCurveWithKnots struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WeightsData struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WeightsData"`
			WeightsDataAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WeightsDataAsString"`
			Weights struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Weights"`
			WeightsAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WeightsAsString"`
		} `json:"fields"`
	} `json:"IfcRationalBSplineCurveWithKnots"`
	IfcRationalBSplineSurfaceWithKnots struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WeightsData struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WeightsData"`
			Weights struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Weights"`
			WeightsAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WeightsAsString"`
		} `json:"fields"`
	} `json:"IfcRationalBSplineSurfaceWithKnots"`
	IfcRectangleHollowProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WallThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WallThickness"`
			WallThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WallThicknessAsString"`
			InnerFilletRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InnerFilletRadius"`
			InnerFilletRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InnerFilletRadiusAsString"`
			OuterFilletRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OuterFilletRadius"`
			OuterFilletRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OuterFilletRadiusAsString"`
		} `json:"fields"`
	} `json:"IfcRectangleHollowProfileDef"`
	IfcRectangleProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			XDim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"XDim"`
			XDimAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"XDimAsString"`
			YDim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"YDim"`
			YDimAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"YDimAsString"`
		} `json:"fields"`
	} `json:"IfcRectangleProfileDef"`
	IfcRectangularPyramid struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			XLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"XLength"`
			XLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"XLengthAsString"`
			YLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"YLength"`
			YLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"YLengthAsString"`
			Height struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Height"`
			HeightAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HeightAsString"`
		} `json:"fields"`
	} `json:"IfcRectangularPyramid"`
	IfcRectangularTrimmedSurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BasisSurface struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BasisSurface"`
			U1 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"U1"`
			U1AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"U1AsString"`
			V1 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"V1"`
			V1AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"V1AsString"`
			U2 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"U2"`
			U2AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"U2AsString"`
			V2 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"V2"`
			V2AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"V2AsString"`
			Usense struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Usense"`
			Vsense struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Vsense"`
		} `json:"fields"`
	} `json:"IfcRectangularTrimmedSurface"`
	IfcRecurrencePattern struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			RecurrenceType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RecurrenceType"`
			DayComponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DayComponent"`
			WeekdayComponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WeekdayComponent"`
			MonthComponent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MonthComponent"`
			Position struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Position"`
			Interval struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Interval"`
			Occurrences struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Occurrences"`
			TimePeriods struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TimePeriods"`
		} `json:"fields"`
	} `json:"IfcRecurrencePattern"`
	IfcReference struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TypeIdentifier struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TypeIdentifier"`
			AttributeIdentifier struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AttributeIdentifier"`
			InstanceName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InstanceName"`
			ListPositions struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ListPositions"`
			InnerReference struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InnerReference"`
		} `json:"fields"`
	} `json:"IfcReference"`
	IfcRegularTimeSeries struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TimeStep struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TimeStep"`
			TimeStepAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TimeStepAsString"`
			Values struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Values"`
		} `json:"fields"`
	} `json:"IfcRegularTimeSeries"`
	IfcReinforcementBarProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TotalCrossSectionArea struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TotalCrossSectionArea"`
			TotalCrossSectionAreaAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TotalCrossSectionAreaAsString"`
			SteelGrade struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SteelGrade"`
			BarSurface struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BarSurface"`
			EffectiveDepth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EffectiveDepth"`
			EffectiveDepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EffectiveDepthAsString"`
			NominalBarDiameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalBarDiameter"`
			NominalBarDiameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalBarDiameterAsString"`
			BarCount struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BarCount"`
			BarCountAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BarCountAsString"`
		} `json:"fields"`
	} `json:"IfcReinforcementBarProperties"`
	IfcReinforcementDefinitionProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			DefinitionType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DefinitionType"`
			ReinforcementSectionDefinitions struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReinforcementSectionDefinitions"`
		} `json:"fields"`
	} `json:"IfcReinforcementDefinitionProperties"`
	IfcReinforcingBar struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			NominalDiameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalDiameter"`
			NominalDiameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalDiameterAsString"`
			CrossSectionArea struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CrossSectionArea"`
			CrossSectionAreaAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CrossSectionAreaAsString"`
			BarLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BarLength"`
			BarLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BarLengthAsString"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			BarSurface struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BarSurface"`
		} `json:"fields"`
	} `json:"IfcReinforcingBar"`
	IfcReinforcingBarType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			NominalDiameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalDiameter"`
			NominalDiameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalDiameterAsString"`
			CrossSectionArea struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CrossSectionArea"`
			CrossSectionAreaAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CrossSectionAreaAsString"`
			BarLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BarLength"`
			BarLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BarLengthAsString"`
			BarSurface struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BarSurface"`
			BendingShapeCode struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BendingShapeCode"`
			BendingParameters struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BendingParameters"`
		} `json:"fields"`
	} `json:"IfcReinforcingBarType"`
	IfcReinforcingElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SteelGrade struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SteelGrade"`
		} `json:"fields"`
	} `json:"IfcReinforcingElement"`
	IfcReinforcingElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcReinforcingElementType"`
	IfcReinforcingMesh struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			MeshLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MeshLength"`
			MeshLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MeshLengthAsString"`
			MeshWidth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MeshWidth"`
			MeshWidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MeshWidthAsString"`
			LongitudinalBarNominalDiameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalBarNominalDiameter"`
			LongitudinalBarNominalDiameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalBarNominalDiameterAsString"`
			TransverseBarNominalDiameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransverseBarNominalDiameter"`
			TransverseBarNominalDiameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransverseBarNominalDiameterAsString"`
			LongitudinalBarCrossSectionArea struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalBarCrossSectionArea"`
			LongitudinalBarCrossSectionAreaAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalBarCrossSectionAreaAsString"`
			TransverseBarCrossSectionArea struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransverseBarCrossSectionArea"`
			TransverseBarCrossSectionAreaAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransverseBarCrossSectionAreaAsString"`
			LongitudinalBarSpacing struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalBarSpacing"`
			LongitudinalBarSpacingAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalBarSpacingAsString"`
			TransverseBarSpacing struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransverseBarSpacing"`
			TransverseBarSpacingAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransverseBarSpacingAsString"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcReinforcingMesh"`
	IfcReinforcingMeshType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			MeshLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MeshLength"`
			MeshLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MeshLengthAsString"`
			MeshWidth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MeshWidth"`
			MeshWidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MeshWidthAsString"`
			LongitudinalBarNominalDiameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalBarNominalDiameter"`
			LongitudinalBarNominalDiameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalBarNominalDiameterAsString"`
			TransverseBarNominalDiameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransverseBarNominalDiameter"`
			TransverseBarNominalDiameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransverseBarNominalDiameterAsString"`
			LongitudinalBarCrossSectionArea struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalBarCrossSectionArea"`
			LongitudinalBarCrossSectionAreaAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalBarCrossSectionAreaAsString"`
			TransverseBarCrossSectionArea struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransverseBarCrossSectionArea"`
			TransverseBarCrossSectionAreaAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransverseBarCrossSectionAreaAsString"`
			LongitudinalBarSpacing struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalBarSpacing"`
			LongitudinalBarSpacingAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalBarSpacingAsString"`
			TransverseBarSpacing struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransverseBarSpacing"`
			TransverseBarSpacingAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransverseBarSpacingAsString"`
			BendingShapeCode struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BendingShapeCode"`
			BendingParameters struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BendingParameters"`
		} `json:"fields"`
	} `json:"IfcReinforcingMeshType"`
	IfcRelAggregates struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingObject struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingObject"`
			RelatedObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedObjects"`
		} `json:"fields"`
	} `json:"IfcRelAggregates"`
	IfcRelAssigns struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatedObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedObjects"`
			RelatedObjectsType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedObjectsType"`
		} `json:"fields"`
	} `json:"IfcRelAssigns"`
	IfcRelAssignsToActor struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingActor struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingActor"`
			ActingRole struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ActingRole"`
		} `json:"fields"`
	} `json:"IfcRelAssignsToActor"`
	IfcRelAssignsToControl struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingControl struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingControl"`
		} `json:"fields"`
	} `json:"IfcRelAssignsToControl"`
	IfcRelAssignsToGroup struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingGroup struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingGroup"`
		} `json:"fields"`
	} `json:"IfcRelAssignsToGroup"`
	IfcRelAssignsToGroupByFactor struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Factor struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Factor"`
			FactorAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FactorAsString"`
		} `json:"fields"`
	} `json:"IfcRelAssignsToGroupByFactor"`
	IfcRelAssignsToProcess struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingProcess struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingProcess"`
			QuantityInProcess struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"QuantityInProcess"`
		} `json:"fields"`
	} `json:"IfcRelAssignsToProcess"`
	IfcRelAssignsToProduct struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingProduct struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingProduct"`
		} `json:"fields"`
	} `json:"IfcRelAssignsToProduct"`
	IfcRelAssignsToResource struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingResource struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingResource"`
		} `json:"fields"`
	} `json:"IfcRelAssignsToResource"`
	IfcRelAssociates struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatedObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedObjects"`
		} `json:"fields"`
	} `json:"IfcRelAssociates"`
	IfcRelAssociatesApproval struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingApproval struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingApproval"`
		} `json:"fields"`
	} `json:"IfcRelAssociatesApproval"`
	IfcRelAssociatesClassification struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingClassification struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingClassification"`
		} `json:"fields"`
	} `json:"IfcRelAssociatesClassification"`
	IfcRelAssociatesConstraint struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Intent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Intent"`
			RelatingConstraint struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingConstraint"`
		} `json:"fields"`
	} `json:"IfcRelAssociatesConstraint"`
	IfcRelAssociatesDocument struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingDocument struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingDocument"`
		} `json:"fields"`
	} `json:"IfcRelAssociatesDocument"`
	IfcRelAssociatesLibrary struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingLibrary struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingLibrary"`
		} `json:"fields"`
	} `json:"IfcRelAssociatesLibrary"`
	IfcRelAssociatesMaterial struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingMaterial struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingMaterial"`
		} `json:"fields"`
	} `json:"IfcRelAssociatesMaterial"`
	IfcRelConnects struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcRelConnects"`
	IfcRelConnectsElements struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ConnectionGeometry struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConnectionGeometry"`
			RelatingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingElement"`
			RelatedElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedElement"`
		} `json:"fields"`
	} `json:"IfcRelConnectsElements"`
	IfcRelConnectsPathElements struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingPriorities struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingPriorities"`
			RelatedPriorities struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedPriorities"`
			RelatedConnectionType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedConnectionType"`
			RelatingConnectionType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingConnectionType"`
		} `json:"fields"`
	} `json:"IfcRelConnectsPathElements"`
	IfcRelConnectsPortToElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingPort struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingPort"`
			RelatedElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedElement"`
		} `json:"fields"`
	} `json:"IfcRelConnectsPortToElement"`
	IfcRelConnectsPorts struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingPort struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingPort"`
			RelatedPort struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedPort"`
			RealizingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RealizingElement"`
		} `json:"fields"`
	} `json:"IfcRelConnectsPorts"`
	IfcRelConnectsStructuralActivity struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingElement"`
			RelatedStructuralActivity struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedStructuralActivity"`
		} `json:"fields"`
	} `json:"IfcRelConnectsStructuralActivity"`
	IfcRelConnectsStructuralMember struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingStructuralMember struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingStructuralMember"`
			RelatedStructuralConnection struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedStructuralConnection"`
			AppliedCondition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AppliedCondition"`
			AdditionalConditions struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AdditionalConditions"`
			SupportedLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SupportedLength"`
			SupportedLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SupportedLengthAsString"`
			ConditionCoordinateSystem struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConditionCoordinateSystem"`
		} `json:"fields"`
	} `json:"IfcRelConnectsStructuralMember"`
	IfcRelConnectsWithEccentricity struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ConnectionConstraint struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConnectionConstraint"`
		} `json:"fields"`
	} `json:"IfcRelConnectsWithEccentricity"`
	IfcRelConnectsWithRealizingElements struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RealizingElements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RealizingElements"`
			ConnectionType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConnectionType"`
		} `json:"fields"`
	} `json:"IfcRelConnectsWithRealizingElements"`
	IfcRelContainedInSpatialStructure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatedElements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedElements"`
			RelatingStructure struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingStructure"`
		} `json:"fields"`
	} `json:"IfcRelContainedInSpatialStructure"`
	IfcRelCoversBldgElements struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingBuildingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingBuildingElement"`
			RelatedCoverings struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedCoverings"`
		} `json:"fields"`
	} `json:"IfcRelCoversBldgElements"`
	IfcRelCoversSpaces struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingSpace struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingSpace"`
			RelatedCoverings struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedCoverings"`
		} `json:"fields"`
	} `json:"IfcRelCoversSpaces"`
	IfcRelDeclares struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingContext struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingContext"`
			RelatedDefinitions struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedDefinitions"`
		} `json:"fields"`
	} `json:"IfcRelDeclares"`
	IfcRelDecomposes struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcRelDecomposes"`
	IfcRelDefines struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcRelDefines"`
	IfcRelDefinesByObject struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatedObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedObjects"`
			RelatingObject struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingObject"`
		} `json:"fields"`
	} `json:"IfcRelDefinesByObject"`
	IfcRelDefinesByProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatedObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedObjects"`
			RelatingPropertyDefinition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingPropertyDefinition"`
		} `json:"fields"`
	} `json:"IfcRelDefinesByProperties"`
	IfcRelDefinesByTemplate struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatedPropertySets struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedPropertySets"`
			RelatingTemplate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingTemplate"`
		} `json:"fields"`
	} `json:"IfcRelDefinesByTemplate"`
	IfcRelDefinesByType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatedObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedObjects"`
			RelatingType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingType"`
		} `json:"fields"`
	} `json:"IfcRelDefinesByType"`
	IfcRelFillsElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingOpeningElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingOpeningElement"`
			RelatedBuildingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedBuildingElement"`
		} `json:"fields"`
	} `json:"IfcRelFillsElement"`
	IfcRelFlowControlElements struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatedControlElements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedControlElements"`
			RelatingFlowElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingFlowElement"`
		} `json:"fields"`
	} `json:"IfcRelFlowControlElements"`
	IfcRelInterferesElements struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingElement"`
			RelatedElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedElement"`
			InterferenceGeometry struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InterferenceGeometry"`
			InterferenceType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InterferenceType"`
			ImpliedOrder struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ImpliedOrder"`
		} `json:"fields"`
	} `json:"IfcRelInterferesElements"`
	IfcRelNests struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingObject struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingObject"`
			RelatedObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedObjects"`
		} `json:"fields"`
	} `json:"IfcRelNests"`
	IfcRelProjectsElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingElement"`
			RelatedFeatureElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedFeatureElement"`
		} `json:"fields"`
	} `json:"IfcRelProjectsElement"`
	IfcRelReferencedInSpatialStructure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatedElements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedElements"`
			RelatingStructure struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingStructure"`
		} `json:"fields"`
	} `json:"IfcRelReferencedInSpatialStructure"`
	IfcRelSequence struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingProcess struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingProcess"`
			RelatedProcess struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedProcess"`
			TimeLag struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TimeLag"`
			SequenceType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SequenceType"`
			UserDefinedSequenceType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedSequenceType"`
		} `json:"fields"`
	} `json:"IfcRelSequence"`
	IfcRelServicesBuildings struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingSystem struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingSystem"`
			RelatedBuildings struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedBuildings"`
		} `json:"fields"`
	} `json:"IfcRelServicesBuildings"`
	IfcRelSpaceBoundary struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingSpace struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingSpace"`
			RelatedBuildingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedBuildingElement"`
			ConnectionGeometry struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConnectionGeometry"`
			PhysicalOrVirtualBoundary struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PhysicalOrVirtualBoundary"`
			InternalOrExternalBoundary struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InternalOrExternalBoundary"`
		} `json:"fields"`
	} `json:"IfcRelSpaceBoundary"`
	IfcRelSpaceBoundary1StLevel struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ParentBoundary struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ParentBoundary"`
			InnerBoundaries struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InnerBoundaries"`
		} `json:"fields"`
	} `json:"IfcRelSpaceBoundary1stLevel"`
	IfcRelSpaceBoundary2NdLevel struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			CorrespondingBoundary struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CorrespondingBoundary"`
			Corresponds struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Corresponds"`
		} `json:"fields"`
	} `json:"IfcRelSpaceBoundary2ndLevel"`
	IfcRelVoidsElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingBuildingElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingBuildingElement"`
			RelatedOpeningElement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedOpeningElement"`
		} `json:"fields"`
	} `json:"IfcRelVoidsElement"`
	IfcRelationship struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcRelationship"`
	IfcReparametrisedCompositeCurveSegment struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ParamLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ParamLength"`
			ParamLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ParamLengthAsString"`
		} `json:"fields"`
	} `json:"IfcReparametrisedCompositeCurveSegment"`
	IfcRepresentation struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ContextOfItems struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ContextOfItems"`
			RepresentationIdentifier struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RepresentationIdentifier"`
			RepresentationType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RepresentationType"`
			Items struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Items"`
			RepresentationMap struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RepresentationMap"`
			LayerAssignments struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LayerAssignments"`
			OfProductRepresentation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OfProductRepresentation"`
		} `json:"fields"`
	} `json:"IfcRepresentation"`
	IfcRepresentationContext struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			ContextIdentifier struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ContextIdentifier"`
			ContextType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ContextType"`
			RepresentationsInContext struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RepresentationsInContext"`
		} `json:"fields"`
	} `json:"IfcRepresentationContext"`
	IfcRepresentationItem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LayerAssignment struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LayerAssignment"`
			StyledByItem struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StyledByItem"`
		} `json:"fields"`
	} `json:"IfcRepresentationItem"`
	IfcRepresentationMap struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			MappingOrigin struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MappingOrigin"`
			MappedRepresentation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MappedRepresentation"`
			HasShapeAspects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasShapeAspects"`
			MapUsage struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MapUsage"`
		} `json:"fields"`
	} `json:"IfcRepresentationMap"`
	IfcResource struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Identification struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identification"`
			LongDescription struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongDescription"`
			ResourceOf struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ResourceOf"`
		} `json:"fields"`
	} `json:"IfcResource"`
	IfcResourceApprovalRelationship struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatedResourceObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedResourceObjects"`
			RelatingApproval struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingApproval"`
		} `json:"fields"`
	} `json:"IfcResourceApprovalRelationship"`
	IfcResourceConstraintRelationship struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RelatingConstraint struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatingConstraint"`
			RelatedResourceObjects struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RelatedResourceObjects"`
		} `json:"fields"`
	} `json:"IfcResourceConstraintRelationship"`
	IfcResourceLevelRelationship struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
		} `json:"fields"`
	} `json:"IfcResourceLevelRelationship"`
	IfcResourceTime struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ScheduleWork struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ScheduleWork"`
			ScheduleUsage struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ScheduleUsage"`
			ScheduleUsageAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ScheduleUsageAsString"`
			ScheduleStart struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ScheduleStart"`
			ScheduleFinish struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ScheduleFinish"`
			ScheduleContour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ScheduleContour"`
			LevelingDelay struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LevelingDelay"`
			IsOverAllocated struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsOverAllocated"`
			StatusTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StatusTime"`
			ActualWork struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ActualWork"`
			ActualUsage struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ActualUsage"`
			ActualUsageAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ActualUsageAsString"`
			ActualStart struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ActualStart"`
			ActualFinish struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ActualFinish"`
			RemainingWork struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RemainingWork"`
			RemainingUsage struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RemainingUsage"`
			RemainingUsageAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RemainingUsageAsString"`
			Completion struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Completion"`
			CompletionAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CompletionAsString"`
		} `json:"fields"`
	} `json:"IfcResourceTime"`
	IfcRevolvedAreaSolid struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Axis struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Axis"`
			Angle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Angle"`
			AngleAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AngleAsString"`
		} `json:"fields"`
	} `json:"IfcRevolvedAreaSolid"`
	IfcRevolvedAreaSolidTapered struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			EndSweptArea struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EndSweptArea"`
		} `json:"fields"`
	} `json:"IfcRevolvedAreaSolidTapered"`
	IfcRightCircularCone struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Height struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Height"`
			HeightAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HeightAsString"`
			BottomRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomRadius"`
			BottomRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomRadiusAsString"`
		} `json:"fields"`
	} `json:"IfcRightCircularCone"`
	IfcRightCircularCylinder struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Height struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Height"`
			HeightAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HeightAsString"`
			Radius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Radius"`
			RadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RadiusAsString"`
		} `json:"fields"`
	} `json:"IfcRightCircularCylinder"`
	IfcRoof struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcRoof"`
	IfcRoofType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcRoofType"`
	IfcRoot struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			GlobalID struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"GlobalId"`
			OwnerHistory struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OwnerHistory"`
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
		} `json:"fields"`
	} `json:"IfcRoot"`
	IfcRoundedRectangleProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RoundingRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RoundingRadius"`
			RoundingRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RoundingRadiusAsString"`
		} `json:"fields"`
	} `json:"IfcRoundedRectangleProfileDef"`
	IfcSIUnit struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Prefix struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Prefix"`
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
		} `json:"fields"`
	} `json:"IfcSIUnit"`
	IfcSanitaryTerminal struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSanitaryTerminal"`
	IfcSanitaryTerminalType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSanitaryTerminalType"`
	IfcSchedulingTime struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			DataOrigin struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DataOrigin"`
			UserDefinedDataOrigin struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedDataOrigin"`
		} `json:"fields"`
	} `json:"IfcSchedulingTime"`
	IfcSeamCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSeamCurve"`
	IfcSectionProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SectionType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SectionType"`
			StartProfile struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StartProfile"`
			EndProfile struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EndProfile"`
		} `json:"fields"`
	} `json:"IfcSectionProperties"`
	IfcSectionReinforcementProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LongitudinalStartPosition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalStartPosition"`
			LongitudinalStartPositionAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalStartPositionAsString"`
			LongitudinalEndPosition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalEndPosition"`
			LongitudinalEndPositionAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongitudinalEndPositionAsString"`
			TransversePosition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransversePosition"`
			TransversePositionAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransversePositionAsString"`
			ReinforcementRole struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReinforcementRole"`
			SectionDefinition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SectionDefinition"`
			CrossSectionReinforcementDefinitions struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CrossSectionReinforcementDefinitions"`
		} `json:"fields"`
	} `json:"IfcSectionReinforcementProperties"`
	IfcSectionedSpine struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SpineCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SpineCurve"`
			CrossSections struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CrossSections"`
			CrossSectionPositions struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CrossSectionPositions"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcSectionedSpine"`
	IfcSensor struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSensor"`
	IfcSensorType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSensorType"`
	IfcShadingDevice struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcShadingDevice"`
	IfcShadingDeviceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcShadingDeviceType"`
	IfcShapeAspect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			ShapeRepresentations struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ShapeRepresentations"`
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			ProductDefinitional struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ProductDefinitional"`
			PartOfProductDefinitionShape struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PartOfProductDefinitionShape"`
		} `json:"fields"`
	} `json:"IfcShapeAspect"`
	IfcShapeModel struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			OfShapeAspect struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OfShapeAspect"`
		} `json:"fields"`
	} `json:"IfcShapeModel"`
	IfcShapeRepresentation struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcShapeRepresentation"`
	IfcShellBasedSurfaceModel struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SbsmBoundary struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SbsmBoundary"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcShellBasedSurfaceModel"`
	IfcSimpleProperty struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSimpleProperty"`
	IfcSimplePropertyTemplate struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TemplateType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TemplateType"`
			PrimaryMeasureType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PrimaryMeasureType"`
			SecondaryMeasureType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SecondaryMeasureType"`
			Enumerators struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Enumerators"`
			PrimaryUnit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PrimaryUnit"`
			SecondaryUnit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SecondaryUnit"`
			Expression struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Expression"`
			AccessState struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AccessState"`
		} `json:"fields"`
	} `json:"IfcSimplePropertyTemplate"`
	IfcSite struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RefLatitude struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RefLatitude"`
			RefLongitude struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RefLongitude"`
			RefElevation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RefElevation"`
			RefElevationAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RefElevationAsString"`
			LandTitleNumber struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LandTitleNumber"`
			SiteAddress struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SiteAddress"`
		} `json:"fields"`
	} `json:"IfcSite"`
	IfcSlab struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSlab"`
	IfcSlabElementedCase struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSlabElementedCase"`
	IfcSlabStandardCase struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSlabStandardCase"`
	IfcSlabType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSlabType"`
	IfcSlippageConnectionCondition struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SlippageX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SlippageX"`
			SlippageXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SlippageXAsString"`
			SlippageY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SlippageY"`
			SlippageYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SlippageYAsString"`
			SlippageZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SlippageZ"`
			SlippageZAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SlippageZAsString"`
		} `json:"fields"`
	} `json:"IfcSlippageConnectionCondition"`
	IfcSolarDevice struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSolarDevice"`
	IfcSolarDeviceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSolarDeviceType"`
	IfcSolidModel struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcSolidModel"`
	IfcSpace struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			ElevationWithFlooring struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ElevationWithFlooring"`
			ElevationWithFlooringAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ElevationWithFlooringAsString"`
			HasCoverings struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasCoverings"`
			BoundedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BoundedBy"`
		} `json:"fields"`
	} `json:"IfcSpace"`
	IfcSpaceHeater struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSpaceHeater"`
	IfcSpaceHeaterType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSpaceHeaterType"`
	IfcSpaceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			LongName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongName"`
		} `json:"fields"`
	} `json:"IfcSpaceType"`
	IfcSpatialElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LongName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongName"`
			ContainsElements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ContainsElements"`
			ServicedBySystems struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ServicedBySystems"`
			ReferencesElements struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferencesElements"`
		} `json:"fields"`
	} `json:"IfcSpatialElement"`
	IfcSpatialElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ElementType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ElementType"`
		} `json:"fields"`
	} `json:"IfcSpatialElementType"`
	IfcSpatialStructureElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			CompositionType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CompositionType"`
		} `json:"fields"`
	} `json:"IfcSpatialStructureElement"`
	IfcSpatialStructureElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSpatialStructureElementType"`
	IfcSpatialZone struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSpatialZone"`
	IfcSpatialZoneType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			LongName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongName"`
		} `json:"fields"`
	} `json:"IfcSpatialZoneType"`
	IfcSphere struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Radius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Radius"`
			RadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RadiusAsString"`
		} `json:"fields"`
	} `json:"IfcSphere"`
	IfcSphericalSurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Radius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Radius"`
			RadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RadiusAsString"`
		} `json:"fields"`
	} `json:"IfcSphericalSurface"`
	IfcStackTerminal struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcStackTerminal"`
	IfcStackTerminalType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcStackTerminalType"`
	IfcStair struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcStair"`
	IfcStairFlight struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			NumberOfRisers struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NumberOfRisers"`
			NumberOfTreads struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NumberOfTreads"`
			RiserHeight struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RiserHeight"`
			RiserHeightAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RiserHeightAsString"`
			TreadLength struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TreadLength"`
			TreadLengthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TreadLengthAsString"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcStairFlight"`
	IfcStairFlightType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcStairFlightType"`
	IfcStairType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcStairType"`
	IfcStructuralAction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			DestabilizingLoad struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DestabilizingLoad"`
		} `json:"fields"`
	} `json:"IfcStructuralAction"`
	IfcStructuralActivity struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			AppliedLoad struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AppliedLoad"`
			GlobalOrLocal struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"GlobalOrLocal"`
			AssignedToStructuralItem struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AssignedToStructuralItem"`
		} `json:"fields"`
	} `json:"IfcStructuralActivity"`
	IfcStructuralAnalysisModel struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			OrientationOf2DPlane struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OrientationOf2DPlane"`
			LoadedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LoadedBy"`
			HasResults struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasResults"`
			SharedPlacement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SharedPlacement"`
		} `json:"fields"`
	} `json:"IfcStructuralAnalysisModel"`
	IfcStructuralConnection struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			AppliedCondition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AppliedCondition"`
			ConnectsStructuralMembers struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConnectsStructuralMembers"`
		} `json:"fields"`
	} `json:"IfcStructuralConnection"`
	IfcStructuralConnectionCondition struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
		} `json:"fields"`
	} `json:"IfcStructuralConnectionCondition"`
	IfcStructuralCurveAction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ProjectedOrTrue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ProjectedOrTrue"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcStructuralCurveAction"`
	IfcStructuralCurveConnection struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Axis struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Axis"`
		} `json:"fields"`
	} `json:"IfcStructuralCurveConnection"`
	IfcStructuralCurveMember struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			Axis struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Axis"`
		} `json:"fields"`
	} `json:"IfcStructuralCurveMember"`
	IfcStructuralCurveMemberVarying struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStructuralCurveMemberVarying"`
	IfcStructuralCurveReaction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcStructuralCurveReaction"`
	IfcStructuralItem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			AssignedStructuralActivity struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AssignedStructuralActivity"`
		} `json:"fields"`
	} `json:"IfcStructuralItem"`
	IfcStructuralLinearAction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStructuralLinearAction"`
	IfcStructuralLoad struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
		} `json:"fields"`
	} `json:"IfcStructuralLoad"`
	IfcStructuralLoadCase struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SelfWeightCoefficients struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SelfWeightCoefficients"`
			SelfWeightCoefficientsAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SelfWeightCoefficientsAsString"`
		} `json:"fields"`
	} `json:"IfcStructuralLoadCase"`
	IfcStructuralLoadConfiguration struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Values struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Values"`
			Locations struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Locations"`
		} `json:"fields"`
	} `json:"IfcStructuralLoadConfiguration"`
	IfcStructuralLoadGroup struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			ActionType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ActionType"`
			ActionSource struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ActionSource"`
			Coefficient struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Coefficient"`
			CoefficientAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CoefficientAsString"`
			Purpose struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Purpose"`
			SourceOfResultGroup struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SourceOfResultGroup"`
			LoadGroupFor struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LoadGroupFor"`
		} `json:"fields"`
	} `json:"IfcStructuralLoadGroup"`
	IfcStructuralLoadLinearForce struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LinearForceX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LinearForceX"`
			LinearForceXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LinearForceXAsString"`
			LinearForceY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LinearForceY"`
			LinearForceYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LinearForceYAsString"`
			LinearForceZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LinearForceZ"`
			LinearForceZAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LinearForceZAsString"`
			LinearMomentX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LinearMomentX"`
			LinearMomentXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LinearMomentXAsString"`
			LinearMomentY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LinearMomentY"`
			LinearMomentYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LinearMomentYAsString"`
			LinearMomentZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LinearMomentZ"`
			LinearMomentZAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LinearMomentZAsString"`
		} `json:"fields"`
	} `json:"IfcStructuralLoadLinearForce"`
	IfcStructuralLoadOrResult struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStructuralLoadOrResult"`
	IfcStructuralLoadPlanarForce struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PlanarForceX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PlanarForceX"`
			PlanarForceXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PlanarForceXAsString"`
			PlanarForceY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PlanarForceY"`
			PlanarForceYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PlanarForceYAsString"`
			PlanarForceZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PlanarForceZ"`
			PlanarForceZAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PlanarForceZAsString"`
		} `json:"fields"`
	} `json:"IfcStructuralLoadPlanarForce"`
	IfcStructuralLoadSingleDisplacement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			DisplacementX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DisplacementX"`
			DisplacementXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DisplacementXAsString"`
			DisplacementY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DisplacementY"`
			DisplacementYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DisplacementYAsString"`
			DisplacementZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DisplacementZ"`
			DisplacementZAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DisplacementZAsString"`
			RotationalDisplacementRX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RotationalDisplacementRX"`
			RotationalDisplacementRXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RotationalDisplacementRXAsString"`
			RotationalDisplacementRY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RotationalDisplacementRY"`
			RotationalDisplacementRYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RotationalDisplacementRYAsString"`
			RotationalDisplacementRZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RotationalDisplacementRZ"`
			RotationalDisplacementRZAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RotationalDisplacementRZAsString"`
		} `json:"fields"`
	} `json:"IfcStructuralLoadSingleDisplacement"`
	IfcStructuralLoadSingleDisplacementDistortion struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Distortion struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Distortion"`
			DistortionAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DistortionAsString"`
		} `json:"fields"`
	} `json:"IfcStructuralLoadSingleDisplacementDistortion"`
	IfcStructuralLoadSingleForce struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ForceX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ForceX"`
			ForceXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ForceXAsString"`
			ForceY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ForceY"`
			ForceYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ForceYAsString"`
			ForceZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ForceZ"`
			ForceZAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ForceZAsString"`
			MomentX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MomentX"`
			MomentXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MomentXAsString"`
			MomentY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MomentY"`
			MomentYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MomentYAsString"`
			MomentZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MomentZ"`
			MomentZAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MomentZAsString"`
		} `json:"fields"`
	} `json:"IfcStructuralLoadSingleForce"`
	IfcStructuralLoadSingleForceWarping struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WarpingMoment struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WarpingMoment"`
			WarpingMomentAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WarpingMomentAsString"`
		} `json:"fields"`
	} `json:"IfcStructuralLoadSingleForceWarping"`
	IfcStructuralLoadStatic struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStructuralLoadStatic"`
	IfcStructuralLoadTemperature struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			DeltaTConstant struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DeltaTConstant"`
			DeltaTConstantAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DeltaTConstantAsString"`
			DeltaTY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DeltaTY"`
			DeltaTYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DeltaTYAsString"`
			DeltaTZ struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DeltaTZ"`
			DeltaTZAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DeltaTZAsString"`
		} `json:"fields"`
	} `json:"IfcStructuralLoadTemperature"`
	IfcStructuralMember struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ConnectedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConnectedBy"`
		} `json:"fields"`
	} `json:"IfcStructuralMember"`
	IfcStructuralPlanarAction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStructuralPlanarAction"`
	IfcStructuralPointAction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStructuralPointAction"`
	IfcStructuralPointConnection struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ConditionCoordinateSystem struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConditionCoordinateSystem"`
		} `json:"fields"`
	} `json:"IfcStructuralPointConnection"`
	IfcStructuralPointReaction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStructuralPointReaction"`
	IfcStructuralReaction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStructuralReaction"`
	IfcStructuralResultGroup struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TheoryType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TheoryType"`
			ResultForLoadGroup struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ResultForLoadGroup"`
			IsLinear struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsLinear"`
			ResultGroupFor struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ResultGroupFor"`
		} `json:"fields"`
	} `json:"IfcStructuralResultGroup"`
	IfcStructuralSurfaceAction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ProjectedOrTrue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ProjectedOrTrue"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcStructuralSurfaceAction"`
	IfcStructuralSurfaceConnection struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStructuralSurfaceConnection"`
	IfcStructuralSurfaceMember struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			Thickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Thickness"`
			ThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ThicknessAsString"`
		} `json:"fields"`
	} `json:"IfcStructuralSurfaceMember"`
	IfcStructuralSurfaceMemberVarying struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStructuralSurfaceMemberVarying"`
	IfcStructuralSurfaceReaction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcStructuralSurfaceReaction"`
	IfcStyleModel struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStyleModel"`
	IfcStyledItem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Item struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Item"`
			Styles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Styles"`
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
		} `json:"fields"`
	} `json:"IfcStyledItem"`
	IfcStyledRepresentation struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStyledRepresentation"`
	IfcSubContractResource struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSubContractResource"`
	IfcSubContractResourceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSubContractResourceType"`
	IfcSubedge struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ParentEdge struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ParentEdge"`
		} `json:"fields"`
	} `json:"IfcSubedge"`
	IfcSurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcSurface"`
	IfcSurfaceCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Curve3D struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Curve3D"`
			AssociatedGeometry struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AssociatedGeometry"`
			MasterRepresentation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MasterRepresentation"`
		} `json:"fields"`
	} `json:"IfcSurfaceCurve"`
	IfcSurfaceCurveSweptAreaSolid struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Directrix struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Directrix"`
			StartParam struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StartParam"`
			StartParamAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StartParamAsString"`
			EndParam struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EndParam"`
			EndParamAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EndParamAsString"`
			ReferenceSurface struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferenceSurface"`
		} `json:"fields"`
	} `json:"IfcSurfaceCurveSweptAreaSolid"`
	IfcSurfaceFeature struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSurfaceFeature"`
	IfcSurfaceOfLinearExtrusion struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ExtrudedDirection struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ExtrudedDirection"`
			Depth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Depth"`
			DepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DepthAsString"`
		} `json:"fields"`
	} `json:"IfcSurfaceOfLinearExtrusion"`
	IfcSurfaceOfRevolution struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			AxisPosition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AxisPosition"`
		} `json:"fields"`
	} `json:"IfcSurfaceOfRevolution"`
	IfcSurfaceReinforcementArea struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SurfaceReinforcement1 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SurfaceReinforcement1"`
			SurfaceReinforcement1AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SurfaceReinforcement1AsString"`
			SurfaceReinforcement2 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SurfaceReinforcement2"`
			SurfaceReinforcement2AsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SurfaceReinforcement2AsString"`
			ShearReinforcement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ShearReinforcement"`
			ShearReinforcementAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ShearReinforcementAsString"`
		} `json:"fields"`
	} `json:"IfcSurfaceReinforcementArea"`
	IfcSurfaceStyle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Side struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Side"`
			Styles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Styles"`
		} `json:"fields"`
	} `json:"IfcSurfaceStyle"`
	IfcSurfaceStyleLighting struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			DiffuseTransmissionColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DiffuseTransmissionColour"`
			DiffuseReflectionColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DiffuseReflectionColour"`
			TransmissionColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransmissionColour"`
			ReflectanceColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReflectanceColour"`
		} `json:"fields"`
	} `json:"IfcSurfaceStyleLighting"`
	IfcSurfaceStyleRefraction struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RefractionIndex struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RefractionIndex"`
			RefractionIndexAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RefractionIndexAsString"`
			DispersionFactor struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DispersionFactor"`
			DispersionFactorAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DispersionFactorAsString"`
		} `json:"fields"`
	} `json:"IfcSurfaceStyleRefraction"`
	IfcSurfaceStyleRendering struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			DiffuseColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DiffuseColour"`
			TransmissionColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransmissionColour"`
			DiffuseTransmissionColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DiffuseTransmissionColour"`
			ReflectionColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReflectionColour"`
			SpecularColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SpecularColour"`
			SpecularHighlight struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SpecularHighlight"`
			ReflectanceMethod struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReflectanceMethod"`
		} `json:"fields"`
	} `json:"IfcSurfaceStyleRendering"`
	IfcSurfaceStyleShading struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SurfaceColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SurfaceColour"`
			Transparency struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Transparency"`
			TransparencyAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransparencyAsString"`
		} `json:"fields"`
	} `json:"IfcSurfaceStyleShading"`
	IfcSurfaceStyleWithTextures struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Textures struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Textures"`
		} `json:"fields"`
	} `json:"IfcSurfaceStyleWithTextures"`
	IfcSurfaceTexture struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RepeatS struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RepeatS"`
			RepeatT struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RepeatT"`
			Mode struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Mode"`
			TextureTransform struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TextureTransform"`
			Parameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Parameter"`
			IsMappedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsMappedBy"`
			UsedInStyles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UsedInStyles"`
		} `json:"fields"`
	} `json:"IfcSurfaceTexture"`
	IfcSweptAreaSolid struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SweptArea struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SweptArea"`
			Position struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Position"`
		} `json:"fields"`
	} `json:"IfcSweptAreaSolid"`
	IfcSweptDiskSolid struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Directrix struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Directrix"`
			Radius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Radius"`
			RadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RadiusAsString"`
			InnerRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InnerRadius"`
			InnerRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"InnerRadiusAsString"`
			StartParam struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StartParam"`
			StartParamAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StartParamAsString"`
			EndParam struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EndParam"`
			EndParamAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EndParamAsString"`
		} `json:"fields"`
	} `json:"IfcSweptDiskSolid"`
	IfcSweptDiskSolidPolygonal struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			FilletRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FilletRadius"`
			FilletRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FilletRadiusAsString"`
		} `json:"fields"`
	} `json:"IfcSweptDiskSolidPolygonal"`
	IfcSweptSurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			SweptCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SweptCurve"`
			Position struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Position"`
		} `json:"fields"`
	} `json:"IfcSweptSurface"`
	IfcSwitchingDevice struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSwitchingDevice"`
	IfcSwitchingDeviceType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSwitchingDeviceType"`
	IfcSystem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ServicesBuildings struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ServicesBuildings"`
		} `json:"fields"`
	} `json:"IfcSystem"`
	IfcSystemFurnitureElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSystemFurnitureElement"`
	IfcSystemFurnitureElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcSystemFurnitureElementType"`
	IfcTShapeProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Depth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Depth"`
			DepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DepthAsString"`
			FlangeWidth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeWidth"`
			FlangeWidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeWidthAsString"`
			WebThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebThickness"`
			WebThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebThicknessAsString"`
			FlangeThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeThickness"`
			FlangeThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeThicknessAsString"`
			FilletRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FilletRadius"`
			FilletRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FilletRadiusAsString"`
			FlangeEdgeRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeEdgeRadius"`
			FlangeEdgeRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeEdgeRadiusAsString"`
			WebEdgeRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebEdgeRadius"`
			WebEdgeRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebEdgeRadiusAsString"`
			WebSlope struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebSlope"`
			WebSlopeAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebSlopeAsString"`
			FlangeSlope struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeSlope"`
			FlangeSlopeAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeSlopeAsString"`
		} `json:"fields"`
	} `json:"IfcTShapeProfileDef"`
	IfcTable struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Rows struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Rows"`
			Columns struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Columns"`
			NumberOfCellsInRow struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NumberOfCellsInRow"`
			NumberOfDataRows struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NumberOfDataRows"`
			NumberOfHeadings struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NumberOfHeadings"`
		} `json:"fields"`
	} `json:"IfcTable"`
	IfcTableColumn struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			Identifier struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identifier"`
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			Unit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Unit"`
			ReferencePath struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferencePath"`
		} `json:"fields"`
	} `json:"IfcTableColumn"`
	IfcTableRow struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			RowCells struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RowCells"`
			IsHeading struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsHeading"`
		} `json:"fields"`
	} `json:"IfcTableRow"`
	IfcTank struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcTank"`
	IfcTankType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcTankType"`
	IfcTask struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Status struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Status"`
			WorkMethod struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WorkMethod"`
			IsMilestone struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsMilestone"`
			Priority struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Priority"`
			TaskTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TaskTime"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcTask"`
	IfcTaskTime struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			DurationType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DurationType"`
			ScheduleDuration struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ScheduleDuration"`
			ScheduleStart struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ScheduleStart"`
			ScheduleFinish struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ScheduleFinish"`
			EarlyStart struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EarlyStart"`
			EarlyFinish struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EarlyFinish"`
			LateStart struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LateStart"`
			LateFinish struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LateFinish"`
			FreeFloat struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FreeFloat"`
			TotalFloat struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TotalFloat"`
			IsCritical struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IsCritical"`
			StatusTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StatusTime"`
			ActualDuration struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ActualDuration"`
			ActualStart struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ActualStart"`
			ActualFinish struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ActualFinish"`
			RemainingTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RemainingTime"`
			Completion struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Completion"`
			CompletionAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CompletionAsString"`
		} `json:"fields"`
	} `json:"IfcTaskTime"`
	IfcTaskTimeRecurring struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Recurrence struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Recurrence"`
		} `json:"fields"`
	} `json:"IfcTaskTimeRecurring"`
	IfcTaskType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			WorkMethod struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WorkMethod"`
		} `json:"fields"`
	} `json:"IfcTaskType"`
	IfcTelecomAddress struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TelephoneNumbers struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TelephoneNumbers"`
			FacsimileNumbers struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FacsimileNumbers"`
			PagerNumber struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PagerNumber"`
			ElectronicMailAddresses struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ElectronicMailAddresses"`
			WWWHomePageURL struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WWWHomePageURL"`
			MessagingIDs struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MessagingIDs"`
		} `json:"fields"`
	} `json:"IfcTelecomAddress"`
	IfcTendon struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			NominalDiameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalDiameter"`
			NominalDiameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalDiameterAsString"`
			CrossSectionArea struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CrossSectionArea"`
			CrossSectionAreaAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CrossSectionAreaAsString"`
			TensionForce struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TensionForce"`
			TensionForceAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TensionForceAsString"`
			PreStress struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PreStress"`
			PreStressAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PreStressAsString"`
			FrictionCoefficient struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FrictionCoefficient"`
			FrictionCoefficientAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FrictionCoefficientAsString"`
			AnchorageSlip struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AnchorageSlip"`
			AnchorageSlipAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"AnchorageSlipAsString"`
			MinCurvatureRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MinCurvatureRadius"`
			MinCurvatureRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MinCurvatureRadiusAsString"`
		} `json:"fields"`
	} `json:"IfcTendon"`
	IfcTendonAnchor struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcTendonAnchor"`
	IfcTendonAnchorType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcTendonAnchorType"`
	IfcTendonType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			NominalDiameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalDiameter"`
			NominalDiameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NominalDiameterAsString"`
			CrossSectionArea struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CrossSectionArea"`
			CrossSectionAreaAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CrossSectionAreaAsString"`
			SheathDiameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SheathDiameter"`
			SheathDiameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SheathDiameterAsString"`
		} `json:"fields"`
	} `json:"IfcTendonType"`
	IfcTessellatedFaceSet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Coordinates struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Coordinates"`
			HasColours struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasColours"`
			HasTextures struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasTextures"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcTessellatedFaceSet"`
	IfcTessellatedItem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcTessellatedItem"`
	IfcTextLiteral struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Literal struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Literal"`
			Placement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Placement"`
			Path struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Path"`
		} `json:"fields"`
	} `json:"IfcTextLiteral"`
	IfcTextLiteralWithExtent struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Extent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Extent"`
			BoxAlignment struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BoxAlignment"`
		} `json:"fields"`
	} `json:"IfcTextLiteralWithExtent"`
	IfcTextStyle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TextCharacterAppearance struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TextCharacterAppearance"`
			TextStyle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TextStyle"`
			TextFontStyle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TextFontStyle"`
			ModelOrDraughting struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ModelOrDraughting"`
		} `json:"fields"`
	} `json:"IfcTextStyle"`
	IfcTextStyleFontModel struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			FontFamily struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FontFamily"`
			FontStyle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FontStyle"`
			FontVariant struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FontVariant"`
			FontWeight struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FontWeight"`
			FontSize struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FontSize"`
		} `json:"fields"`
	} `json:"IfcTextStyleFontModel"`
	IfcTextStyleForDefinedFont struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Colour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Colour"`
			BackgroundColour struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BackgroundColour"`
		} `json:"fields"`
	} `json:"IfcTextStyleForDefinedFont"`
	IfcTextStyleTextModel struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TextIndent struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TextIndent"`
			TextAlign struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TextAlign"`
			TextDecoration struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TextDecoration"`
			LetterSpacing struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LetterSpacing"`
			WordSpacing struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WordSpacing"`
			TextTransform struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TextTransform"`
			LineHeight struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LineHeight"`
		} `json:"fields"`
	} `json:"IfcTextStyleTextModel"`
	IfcTextureCoordinate struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Maps struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Maps"`
		} `json:"fields"`
	} `json:"IfcTextureCoordinate"`
	IfcTextureCoordinateGenerator struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Mode struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Mode"`
			Parameter struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Parameter"`
			ParameterAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ParameterAsString"`
		} `json:"fields"`
	} `json:"IfcTextureCoordinateGenerator"`
	IfcTextureMap struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Vertices struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Vertices"`
			MappedTo struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MappedTo"`
		} `json:"fields"`
	} `json:"IfcTextureMap"`
	IfcTextureVertex struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Coordinates struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Coordinates"`
			CoordinatesAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CoordinatesAsString"`
		} `json:"fields"`
	} `json:"IfcTextureVertex"`
	IfcTextureVertexList struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			TexCoordsList struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TexCoordsList"`
		} `json:"fields"`
	} `json:"IfcTextureVertexList"`
	IfcTimePeriod struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			StartTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StartTime"`
			EndTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EndTime"`
		} `json:"fields"`
	} `json:"IfcTimePeriod"`
	IfcTimeSeries struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Name struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Name"`
			Description struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Description"`
			StartTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StartTime"`
			EndTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EndTime"`
			TimeSeriesDataType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TimeSeriesDataType"`
			DataOrigin struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DataOrigin"`
			UserDefinedDataOrigin struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedDataOrigin"`
			Unit struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Unit"`
			HasExternalReference struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasExternalReference"`
		} `json:"fields"`
	} `json:"IfcTimeSeries"`
	IfcTimeSeriesValue struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			ListValues struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ListValues"`
		} `json:"fields"`
	} `json:"IfcTimeSeriesValue"`
	IfcTopologicalRepresentationItem struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcTopologicalRepresentationItem"`
	IfcTopologyRepresentation struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcTopologyRepresentation"`
	IfcToroidalSurface struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			MajorRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MajorRadius"`
			MajorRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MajorRadiusAsString"`
			MinorRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MinorRadius"`
			MinorRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MinorRadiusAsString"`
		} `json:"fields"`
	} `json:"IfcToroidalSurface"`
	IfcTransformer struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcTransformer"`
	IfcTransformerType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcTransformerType"`
	IfcTransportElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcTransportElement"`
	IfcTransportElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcTransportElementType"`
	IfcTrapeziumProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BottomXDim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomXDim"`
			BottomXDimAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BottomXDimAsString"`
			TopXDim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopXDim"`
			TopXDimAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopXDimAsString"`
			YDim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"YDim"`
			YDimAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"YDimAsString"`
			TopXOffset struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopXOffset"`
			TopXOffsetAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TopXOffsetAsString"`
		} `json:"fields"`
	} `json:"IfcTrapeziumProfileDef"`
	IfcTriangulatedFaceSet struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Normals struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Normals"`
			Closed struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Closed"`
			CoordIndex struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CoordIndex"`
			PnIndex struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PnIndex"`
			NumberOfTriangles struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"NumberOfTriangles"`
		} `json:"fields"`
	} `json:"IfcTriangulatedFaceSet"`
	IfcTrimmedCurve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			BasisCurve struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"BasisCurve"`
			Trim1 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Trim1"`
			Trim2 struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Trim2"`
			SenseAgreement struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SenseAgreement"`
			MasterRepresentation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MasterRepresentation"`
		} `json:"fields"`
	} `json:"IfcTrimmedCurve"`
	IfcTubeBundle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcTubeBundle"`
	IfcTubeBundleType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcTubeBundleType"`
	IfcTypeObject struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ApplicableOccurrence struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ApplicableOccurrence"`
			HasPropertySets struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"HasPropertySets"`
			Types struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Types"`
		} `json:"fields"`
	} `json:"IfcTypeObject"`
	IfcTypeProcess struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Identification struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identification"`
			LongDescription struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongDescription"`
			ProcessType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ProcessType"`
			OperatesOn struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OperatesOn"`
		} `json:"fields"`
	} `json:"IfcTypeProcess"`
	IfcTypeProduct struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RepresentationMaps struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RepresentationMaps"`
			Tag struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Tag"`
			ReferencedBy struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ReferencedBy"`
		} `json:"fields"`
	} `json:"IfcTypeProduct"`
	IfcTypeResource struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Identification struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Identification"`
			LongDescription struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongDescription"`
			ResourceType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ResourceType"`
			ResourceOf struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ResourceOf"`
		} `json:"fields"`
	} `json:"IfcTypeResource"`
	IfcUShapeProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Depth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Depth"`
			DepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DepthAsString"`
			FlangeWidth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeWidth"`
			FlangeWidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeWidthAsString"`
			WebThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebThickness"`
			WebThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebThicknessAsString"`
			FlangeThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeThickness"`
			FlangeThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeThicknessAsString"`
			FilletRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FilletRadius"`
			FilletRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FilletRadiusAsString"`
			EdgeRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EdgeRadius"`
			EdgeRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EdgeRadiusAsString"`
			FlangeSlope struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeSlope"`
			FlangeSlopeAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeSlopeAsString"`
		} `json:"fields"`
	} `json:"IfcUShapeProfileDef"`
	IfcUnitAssignment struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			Units struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Units"`
		} `json:"fields"`
	} `json:"IfcUnitAssignment"`
	IfcUnitaryControlElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcUnitaryControlElement"`
	IfcUnitaryControlElementType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcUnitaryControlElementType"`
	IfcUnitaryEquipment struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcUnitaryEquipment"`
	IfcUnitaryEquipmentType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcUnitaryEquipmentType"`
	IfcValve struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcValve"`
	IfcValveType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcValveType"`
	IfcVector struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Orientation struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Orientation"`
			Magnitude struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Magnitude"`
			MagnitudeAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MagnitudeAsString"`
			Dim struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Dim"`
		} `json:"fields"`
	} `json:"IfcVector"`
	IfcVertex struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcVertex"`
	IfcVertexLoop struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LoopVertex struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LoopVertex"`
		} `json:"fields"`
	} `json:"IfcVertexLoop"`
	IfcVertexPoint struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			VertexGeometry struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"VertexGeometry"`
		} `json:"fields"`
	} `json:"IfcVertexPoint"`
	IfcVibrationIsolator struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcVibrationIsolator"`
	IfcVibrationIsolatorType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcVibrationIsolatorType"`
	IfcVirtualElement struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcVirtualElement"`
	IfcVirtualGridIntersection struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			IntersectingAxes struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"IntersectingAxes"`
			OffsetDistances struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OffsetDistances"`
			OffsetDistancesAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OffsetDistancesAsString"`
		} `json:"fields"`
	} `json:"IfcVirtualGridIntersection"`
	IfcVoidingFeature struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcVoidingFeature"`
	IfcWall struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcWall"`
	IfcWallElementedCase struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcWallElementedCase"`
	IfcWallStandardCase struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcWallStandardCase"`
	IfcWallType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcWallType"`
	IfcWasteTerminal struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcWasteTerminal"`
	IfcWasteTerminalType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcWasteTerminalType"`
	IfcWindow struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			OverallHeight struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallHeight"`
			OverallHeightAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallHeightAsString"`
			OverallWidth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallWidth"`
			OverallWidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OverallWidthAsString"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			PartitioningType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PartitioningType"`
			UserDefinedPartitioningType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedPartitioningType"`
		} `json:"fields"`
	} `json:"IfcWindow"`
	IfcWindowLiningProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LiningDepth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningDepth"`
			LiningDepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningDepthAsString"`
			LiningThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningThickness"`
			LiningThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningThicknessAsString"`
			TransomThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransomThickness"`
			TransomThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TransomThicknessAsString"`
			MullionThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MullionThickness"`
			MullionThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"MullionThicknessAsString"`
			FirstTransomOffset struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FirstTransomOffset"`
			FirstTransomOffsetAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FirstTransomOffsetAsString"`
			SecondTransomOffset struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SecondTransomOffset"`
			SecondTransomOffsetAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SecondTransomOffsetAsString"`
			FirstMullionOffset struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FirstMullionOffset"`
			FirstMullionOffsetAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FirstMullionOffsetAsString"`
			SecondMullionOffset struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SecondMullionOffset"`
			SecondMullionOffsetAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"SecondMullionOffsetAsString"`
			ShapeAspectStyle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ShapeAspectStyle"`
			LiningOffset struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningOffset"`
			LiningOffsetAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningOffsetAsString"`
			LiningToPanelOffsetX struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningToPanelOffsetX"`
			LiningToPanelOffsetXAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningToPanelOffsetXAsString"`
			LiningToPanelOffsetY struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningToPanelOffsetY"`
			LiningToPanelOffsetYAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LiningToPanelOffsetYAsString"`
		} `json:"fields"`
	} `json:"IfcWindowLiningProperties"`
	IfcWindowPanelProperties struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			OperationType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OperationType"`
			PanelPosition struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PanelPosition"`
			FrameDepth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FrameDepth"`
			FrameDepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FrameDepthAsString"`
			FrameThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FrameThickness"`
			FrameThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FrameThicknessAsString"`
			ShapeAspectStyle struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ShapeAspectStyle"`
		} `json:"fields"`
	} `json:"IfcWindowPanelProperties"`
	IfcWindowStandardCase struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcWindowStandardCase"`
	IfcWindowStyle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			ConstructionType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ConstructionType"`
			OperationType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"OperationType"`
			ParameterTakesPrecedence struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ParameterTakesPrecedence"`
			Sizeable struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Sizeable"`
		} `json:"fields"`
	} `json:"IfcWindowStyle"`
	IfcWindowType struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
			PartitioningType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PartitioningType"`
			ParameterTakesPrecedence struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ParameterTakesPrecedence"`
			UserDefinedPartitioningType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"UserDefinedPartitioningType"`
		} `json:"fields"`
	} `json:"IfcWindowType"`
	IfcWorkCalendar struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WorkingTimes struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WorkingTimes"`
			ExceptionTimes struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ExceptionTimes"`
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcWorkCalendar"`
	IfcWorkControl struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			CreationDate struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"CreationDate"`
			Creators struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Creators"`
			Purpose struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Purpose"`
			Duration struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Duration"`
			TotalFloat struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"TotalFloat"`
			StartTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"StartTime"`
			FinishTime struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FinishTime"`
		} `json:"fields"`
	} `json:"IfcWorkControl"`
	IfcWorkPlan struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcWorkPlan"`
	IfcWorkSchedule struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			PredefinedType struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"PredefinedType"`
		} `json:"fields"`
	} `json:"IfcWorkSchedule"`
	IfcWorkTime struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			RecurrencePattern struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"RecurrencePattern"`
			Start struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Start"`
			Finish struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Finish"`
		} `json:"fields"`
	} `json:"IfcWorkTime"`
	IfcZShapeProfileDef struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			Depth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"Depth"`
			DepthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"DepthAsString"`
			FlangeWidth struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeWidth"`
			FlangeWidthAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeWidthAsString"`
			WebThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebThickness"`
			WebThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"WebThicknessAsString"`
			FlangeThickness struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeThickness"`
			FlangeThicknessAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FlangeThicknessAsString"`
			FilletRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FilletRadius"`
			FilletRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"FilletRadiusAsString"`
			EdgeRadius struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EdgeRadius"`
			EdgeRadiusAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"EdgeRadiusAsString"`
		} `json:"fields"`
	} `json:"IfcZShapeProfileDef"`
	IfcZone struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			LongName struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"LongName"`
		} `json:"fields"`
	} `json:"IfcZone"`
	IfcStrippedOptional struct {
		Domain       interface{}   `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcStrippedOptional"`
	IfcAbsorbedDoseMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcAbsorbedDoseMeasure"`
	IfcAccelerationMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcAccelerationMeasure"`
	IfcAmountOfSubstanceMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcAmountOfSubstanceMeasure"`
	IfcAngularVelocityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcAngularVelocityMeasure"`
	IfcAreaDensityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcAreaDensityMeasure"`
	IfcAreaMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcAreaMeasure"`
	IfcBinary struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcBinary"`
	IfcBoolean struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcBoolean"`
	IfcCardinalPointReference struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcCardinalPointReference"`
	IfcContextDependentMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcContextDependentMeasure"`
	IfcCountMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcCountMeasure"`
	IfcCurvatureMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcCurvatureMeasure"`
	IfcDate struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcDate"`
	IfcDateTime struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcDateTime"`
	IfcDayInMonthNumber struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcDayInMonthNumber"`
	IfcDayInWeekNumber struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcDayInWeekNumber"`
	IfcDescriptiveMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcDescriptiveMeasure"`
	IfcDimensionCount struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcDimensionCount"`
	IfcDoseEquivalentMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcDoseEquivalentMeasure"`
	IfcDuration struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcDuration"`
	IfcDynamicViscosityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcDynamicViscosityMeasure"`
	IfcElectricCapacitanceMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcElectricCapacitanceMeasure"`
	IfcElectricChargeMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcElectricChargeMeasure"`
	IfcElectricConductanceMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcElectricConductanceMeasure"`
	IfcElectricCurrentMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcElectricCurrentMeasure"`
	IfcElectricResistanceMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcElectricResistanceMeasure"`
	IfcElectricVoltageMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcElectricVoltageMeasure"`
	IfcEnergyMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcEnergyMeasure"`
	IfcFontStyle struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcFontStyle"`
	IfcFontVariant struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcFontVariant"`
	IfcFontWeight struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcFontWeight"`
	IfcForceMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcForceMeasure"`
	IfcFrequencyMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcFrequencyMeasure"`
	IfcGloballyUniqueID struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcGloballyUniqueId"`
	IfcHeatFluxDensityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcHeatFluxDensityMeasure"`
	IfcHeatingValueMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcHeatingValueMeasure"`
	IfcIdentifier struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcIdentifier"`
	IfcIlluminanceMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcIlluminanceMeasure"`
	IfcInductanceMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcInductanceMeasure"`
	IfcInteger struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcInteger"`
	IfcIntegerCountRateMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcIntegerCountRateMeasure"`
	IfcIonConcentrationMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcIonConcentrationMeasure"`
	IfcIsothermalMoistureCapacityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcIsothermalMoistureCapacityMeasure"`
	IfcKinematicViscosityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcKinematicViscosityMeasure"`
	IfcLabel struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcLabel"`
	IfcLengthMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcLengthMeasure"`
	IfcLinearForceMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcLinearForceMeasure"`
	IfcLinearMomentMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcLinearMomentMeasure"`
	IfcLinearStiffnessMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcLinearStiffnessMeasure"`
	IfcLinearVelocityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcLinearVelocityMeasure"`
	IfcLogical struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcLogical"`
	IfcLuminousFluxMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcLuminousFluxMeasure"`
	IfcLuminousIntensityDistributionMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcLuminousIntensityDistributionMeasure"`
	IfcLuminousIntensityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcLuminousIntensityMeasure"`
	IfcMagneticFluxDensityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcMagneticFluxDensityMeasure"`
	IfcMagneticFluxMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcMagneticFluxMeasure"`
	IfcMassDensityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcMassDensityMeasure"`
	IfcMassFlowRateMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcMassFlowRateMeasure"`
	IfcMassMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcMassMeasure"`
	IfcMassPerLengthMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcMassPerLengthMeasure"`
	IfcModulusOfElasticityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcModulusOfElasticityMeasure"`
	IfcModulusOfLinearSubgradeReactionMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcModulusOfLinearSubgradeReactionMeasure"`
	IfcModulusOfRotationalSubgradeReactionMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcModulusOfRotationalSubgradeReactionMeasure"`
	IfcModulusOfSubgradeReactionMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcModulusOfSubgradeReactionMeasure"`
	IfcMoistureDiffusivityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcMoistureDiffusivityMeasure"`
	IfcMolecularWeightMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcMolecularWeightMeasure"`
	IfcMomentOfInertiaMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcMomentOfInertiaMeasure"`
	IfcMonetaryMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcMonetaryMeasure"`
	IfcMonthInYearNumber struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcMonthInYearNumber"`
	IfcNumericMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcNumericMeasure"`
	IfcPHMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcPHMeasure"`
	IfcParameterValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcParameterValue"`
	IfcPlanarForceMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcPlanarForceMeasure"`
	IfcPlaneAngleMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcPlaneAngleMeasure"`
	IfcPowerMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcPowerMeasure"`
	IfcPresentableText struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcPresentableText"`
	IfcPressureMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcPressureMeasure"`
	IfcRadioActivityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcRadioActivityMeasure"`
	IfcRatioMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcRatioMeasure"`
	IfcReal struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcReal"`
	IfcRotationalFrequencyMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcRotationalFrequencyMeasure"`
	IfcRotationalMassMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcRotationalMassMeasure"`
	IfcRotationalStiffnessMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcRotationalStiffnessMeasure"`
	IfcSectionModulusMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcSectionModulusMeasure"`
	IfcSectionalAreaIntegralMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcSectionalAreaIntegralMeasure"`
	IfcShearModulusMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcShearModulusMeasure"`
	IfcSolidAngleMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcSolidAngleMeasure"`
	IfcSoundPowerLevelMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcSoundPowerLevelMeasure"`
	IfcSoundPowerMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcSoundPowerMeasure"`
	IfcSoundPressureLevelMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcSoundPressureLevelMeasure"`
	IfcSoundPressureMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcSoundPressureMeasure"`
	IfcSpecificHeatCapacityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcSpecificHeatCapacityMeasure"`
	IfcSpecularExponent struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcSpecularExponent"`
	IfcSpecularRoughness struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcSpecularRoughness"`
	IfcTemperatureGradientMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcTemperatureGradientMeasure"`
	IfcTemperatureRateOfChangeMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcTemperatureRateOfChangeMeasure"`
	IfcText struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcText"`
	IfcTextAlignment struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcTextAlignment"`
	IfcTextDecoration struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcTextDecoration"`
	IfcTextFontName struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcTextFontName"`
	IfcTextTransformation struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcTextTransformation"`
	IfcThermalAdmittanceMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcThermalAdmittanceMeasure"`
	IfcThermalConductivityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcThermalConductivityMeasure"`
	IfcThermalExpansionCoefficientMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcThermalExpansionCoefficientMeasure"`
	IfcThermalResistanceMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcThermalResistanceMeasure"`
	IfcThermalTransmittanceMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcThermalTransmittanceMeasure"`
	IfcThermodynamicTemperatureMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcThermodynamicTemperatureMeasure"`
	IfcTime struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcTime"`
	IfcTimeMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcTimeMeasure"`
	IfcTimeStamp struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcTimeStamp"`
	IfcTorqueMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcTorqueMeasure"`
	IfcURIReference struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcURIReference"`
	IfcVaporPermeabilityMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcVaporPermeabilityMeasure"`
	IfcVolumeMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcVolumeMeasure"`
	IfcVolumetricFlowRateMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcVolumetricFlowRateMeasure"`
	IfcWarpingConstantMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcWarpingConstantMeasure"`
	IfcWarpingMomentMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcWarpingMomentMeasure"`
	IfcBoxAlignment struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcBoxAlignment"`
	IfcCompoundPlaneAngleMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcCompoundPlaneAngleMeasure"`
	IfcLanguageID struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcLanguageId"`
	IfcNonNegativeLengthMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcNonNegativeLengthMeasure"`
	IfcNormalisedRatioMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcNormalisedRatioMeasure"`
	IfcPositiveInteger struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPositiveInteger"`
	IfcPositiveLengthMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPositiveLengthMeasure"`
	IfcPositivePlaneAngleMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPositivePlaneAngleMeasure"`
	IfcPositiveRatioMeasure struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPositiveRatioMeasure"`
	IfcActionRequestTypeEnum struct {
	} `json:"IfcActionRequestTypeEnum"`
	IfcActionSourceTypeEnum struct {
	} `json:"IfcActionSourceTypeEnum"`
	IfcActionTypeEnum struct {
	} `json:"IfcActionTypeEnum"`
	IfcActuatorTypeEnum struct {
	} `json:"IfcActuatorTypeEnum"`
	IfcAddressTypeEnum struct {
	} `json:"IfcAddressTypeEnum"`
	IfcAirTerminalBoxTypeEnum struct {
	} `json:"IfcAirTerminalBoxTypeEnum"`
	IfcAirTerminalTypeEnum struct {
	} `json:"IfcAirTerminalTypeEnum"`
	IfcAirToAirHeatRecoveryTypeEnum struct {
	} `json:"IfcAirToAirHeatRecoveryTypeEnum"`
	IfcAlarmTypeEnum struct {
	} `json:"IfcAlarmTypeEnum"`
	IfcAnalysisModelTypeEnum struct {
	} `json:"IfcAnalysisModelTypeEnum"`
	IfcAnalysisTheoryTypeEnum struct {
	} `json:"IfcAnalysisTheoryTypeEnum"`
	IfcArithmeticOperatorEnum struct {
	} `json:"IfcArithmeticOperatorEnum"`
	IfcAssemblyPlaceEnum struct {
	} `json:"IfcAssemblyPlaceEnum"`
	IfcAudioVisualApplianceTypeEnum struct {
	} `json:"IfcAudioVisualApplianceTypeEnum"`
	IfcBSplineCurveForm struct {
	} `json:"IfcBSplineCurveForm"`
	IfcBSplineSurfaceForm struct {
	} `json:"IfcBSplineSurfaceForm"`
	IfcBeamTypeEnum struct {
	} `json:"IfcBeamTypeEnum"`
	IfcBenchmarkEnum struct {
	} `json:"IfcBenchmarkEnum"`
	IfcBoilerTypeEnum struct {
	} `json:"IfcBoilerTypeEnum"`
	IfcBooleanOperator struct {
	} `json:"IfcBooleanOperator"`
	IfcBuildingElementPartTypeEnum struct {
	} `json:"IfcBuildingElementPartTypeEnum"`
	IfcBuildingElementProxyTypeEnum struct {
	} `json:"IfcBuildingElementProxyTypeEnum"`
	IfcBuildingSystemTypeEnum struct {
	} `json:"IfcBuildingSystemTypeEnum"`
	IfcBurnerTypeEnum struct {
	} `json:"IfcBurnerTypeEnum"`
	IfcCableCarrierFittingTypeEnum struct {
	} `json:"IfcCableCarrierFittingTypeEnum"`
	IfcCableCarrierSegmentTypeEnum struct {
	} `json:"IfcCableCarrierSegmentTypeEnum"`
	IfcCableFittingTypeEnum struct {
	} `json:"IfcCableFittingTypeEnum"`
	IfcCableSegmentTypeEnum struct {
	} `json:"IfcCableSegmentTypeEnum"`
	IfcChangeActionEnum struct {
	} `json:"IfcChangeActionEnum"`
	IfcChillerTypeEnum struct {
	} `json:"IfcChillerTypeEnum"`
	IfcChimneyTypeEnum struct {
	} `json:"IfcChimneyTypeEnum"`
	IfcCoilTypeEnum struct {
	} `json:"IfcCoilTypeEnum"`
	IfcColumnTypeEnum struct {
	} `json:"IfcColumnTypeEnum"`
	IfcCommunicationsApplianceTypeEnum struct {
	} `json:"IfcCommunicationsApplianceTypeEnum"`
	IfcComplexPropertyTemplateTypeEnum struct {
	} `json:"IfcComplexPropertyTemplateTypeEnum"`
	IfcCompressorTypeEnum struct {
	} `json:"IfcCompressorTypeEnum"`
	IfcCondenserTypeEnum struct {
	} `json:"IfcCondenserTypeEnum"`
	IfcConnectionTypeEnum struct {
	} `json:"IfcConnectionTypeEnum"`
	IfcConstraintEnum struct {
	} `json:"IfcConstraintEnum"`
	IfcConstructionEquipmentResourceTypeEnum struct {
	} `json:"IfcConstructionEquipmentResourceTypeEnum"`
	IfcConstructionMaterialResourceTypeEnum struct {
	} `json:"IfcConstructionMaterialResourceTypeEnum"`
	IfcConstructionProductResourceTypeEnum struct {
	} `json:"IfcConstructionProductResourceTypeEnum"`
	IfcControllerTypeEnum struct {
	} `json:"IfcControllerTypeEnum"`
	IfcCooledBeamTypeEnum struct {
	} `json:"IfcCooledBeamTypeEnum"`
	IfcCoolingTowerTypeEnum struct {
	} `json:"IfcCoolingTowerTypeEnum"`
	IfcCostItemTypeEnum struct {
	} `json:"IfcCostItemTypeEnum"`
	IfcCostScheduleTypeEnum struct {
	} `json:"IfcCostScheduleTypeEnum"`
	IfcCoveringTypeEnum struct {
	} `json:"IfcCoveringTypeEnum"`
	IfcCrewResourceTypeEnum struct {
	} `json:"IfcCrewResourceTypeEnum"`
	IfcCurtainWallTypeEnum struct {
	} `json:"IfcCurtainWallTypeEnum"`
	IfcCurveInterpolationEnum struct {
	} `json:"IfcCurveInterpolationEnum"`
	IfcDamperTypeEnum struct {
	} `json:"IfcDamperTypeEnum"`
	IfcDataOriginEnum struct {
	} `json:"IfcDataOriginEnum"`
	IfcDerivedUnitEnum struct {
	} `json:"IfcDerivedUnitEnum"`
	IfcDirectionSenseEnum struct {
	} `json:"IfcDirectionSenseEnum"`
	IfcDiscreteAccessoryTypeEnum struct {
	} `json:"IfcDiscreteAccessoryTypeEnum"`
	IfcDistributionChamberElementTypeEnum struct {
	} `json:"IfcDistributionChamberElementTypeEnum"`
	IfcDistributionPortTypeEnum struct {
	} `json:"IfcDistributionPortTypeEnum"`
	IfcDistributionSystemEnum struct {
	} `json:"IfcDistributionSystemEnum"`
	IfcDocumentConfidentialityEnum struct {
	} `json:"IfcDocumentConfidentialityEnum"`
	IfcDocumentStatusEnum struct {
	} `json:"IfcDocumentStatusEnum"`
	IfcDoorPanelOperationEnum struct {
	} `json:"IfcDoorPanelOperationEnum"`
	IfcDoorPanelPositionEnum struct {
	} `json:"IfcDoorPanelPositionEnum"`
	IfcDoorStyleConstructionEnum struct {
	} `json:"IfcDoorStyleConstructionEnum"`
	IfcDoorStyleOperationEnum struct {
	} `json:"IfcDoorStyleOperationEnum"`
	IfcDoorTypeEnum struct {
	} `json:"IfcDoorTypeEnum"`
	IfcDoorTypeOperationEnum struct {
	} `json:"IfcDoorTypeOperationEnum"`
	IfcDuctFittingTypeEnum struct {
	} `json:"IfcDuctFittingTypeEnum"`
	IfcDuctSegmentTypeEnum struct {
	} `json:"IfcDuctSegmentTypeEnum"`
	IfcDuctSilencerTypeEnum struct {
	} `json:"IfcDuctSilencerTypeEnum"`
	IfcElectricApplianceTypeEnum struct {
	} `json:"IfcElectricApplianceTypeEnum"`
	IfcElectricDistributionBoardTypeEnum struct {
	} `json:"IfcElectricDistributionBoardTypeEnum"`
	IfcElectricFlowStorageDeviceTypeEnum struct {
	} `json:"IfcElectricFlowStorageDeviceTypeEnum"`
	IfcElectricGeneratorTypeEnum struct {
	} `json:"IfcElectricGeneratorTypeEnum"`
	IfcElectricMotorTypeEnum struct {
	} `json:"IfcElectricMotorTypeEnum"`
	IfcElectricTimeControlTypeEnum struct {
	} `json:"IfcElectricTimeControlTypeEnum"`
	IfcElementAssemblyTypeEnum struct {
	} `json:"IfcElementAssemblyTypeEnum"`
	IfcElementCompositionEnum struct {
	} `json:"IfcElementCompositionEnum"`
	IfcEngineTypeEnum struct {
	} `json:"IfcEngineTypeEnum"`
	IfcEvaporativeCoolerTypeEnum struct {
	} `json:"IfcEvaporativeCoolerTypeEnum"`
	IfcEvaporatorTypeEnum struct {
	} `json:"IfcEvaporatorTypeEnum"`
	IfcEventTriggerTypeEnum struct {
	} `json:"IfcEventTriggerTypeEnum"`
	IfcEventTypeEnum struct {
	} `json:"IfcEventTypeEnum"`
	IfcExternalSpatialElementTypeEnum struct {
	} `json:"IfcExternalSpatialElementTypeEnum"`
	IfcFanTypeEnum struct {
	} `json:"IfcFanTypeEnum"`
	IfcFastenerTypeEnum struct {
	} `json:"IfcFastenerTypeEnum"`
	IfcFilterTypeEnum struct {
	} `json:"IfcFilterTypeEnum"`
	IfcFireSuppressionTerminalTypeEnum struct {
	} `json:"IfcFireSuppressionTerminalTypeEnum"`
	IfcFlowDirectionEnum struct {
	} `json:"IfcFlowDirectionEnum"`
	IfcFlowInstrumentTypeEnum struct {
	} `json:"IfcFlowInstrumentTypeEnum"`
	IfcFlowMeterTypeEnum struct {
	} `json:"IfcFlowMeterTypeEnum"`
	IfcFootingTypeEnum struct {
	} `json:"IfcFootingTypeEnum"`
	IfcFurnitureTypeEnum struct {
	} `json:"IfcFurnitureTypeEnum"`
	IfcGeographicElementTypeEnum struct {
	} `json:"IfcGeographicElementTypeEnum"`
	IfcGeometricProjectionEnum struct {
	} `json:"IfcGeometricProjectionEnum"`
	IfcGlobalOrLocalEnum struct {
	} `json:"IfcGlobalOrLocalEnum"`
	IfcGridTypeEnum struct {
	} `json:"IfcGridTypeEnum"`
	IfcHeatExchangerTypeEnum struct {
	} `json:"IfcHeatExchangerTypeEnum"`
	IfcHumidifierTypeEnum struct {
	} `json:"IfcHumidifierTypeEnum"`
	IfcInterceptorTypeEnum struct {
	} `json:"IfcInterceptorTypeEnum"`
	IfcInternalOrExternalEnum struct {
	} `json:"IfcInternalOrExternalEnum"`
	IfcInventoryTypeEnum struct {
	} `json:"IfcInventoryTypeEnum"`
	IfcJunctionBoxTypeEnum struct {
	} `json:"IfcJunctionBoxTypeEnum"`
	IfcKnotType struct {
	} `json:"IfcKnotType"`
	IfcLaborResourceTypeEnum struct {
	} `json:"IfcLaborResourceTypeEnum"`
	IfcLampTypeEnum struct {
	} `json:"IfcLampTypeEnum"`
	IfcLayerSetDirectionEnum struct {
	} `json:"IfcLayerSetDirectionEnum"`
	IfcLightDistributionCurveEnum struct {
	} `json:"IfcLightDistributionCurveEnum"`
	IfcLightEmissionSourceEnum struct {
	} `json:"IfcLightEmissionSourceEnum"`
	IfcLightFixtureTypeEnum struct {
	} `json:"IfcLightFixtureTypeEnum"`
	IfcLoadGroupTypeEnum struct {
	} `json:"IfcLoadGroupTypeEnum"`
	IfcLogicalOperatorEnum struct {
	} `json:"IfcLogicalOperatorEnum"`
	IfcMechanicalFastenerTypeEnum struct {
	} `json:"IfcMechanicalFastenerTypeEnum"`
	IfcMedicalDeviceTypeEnum struct {
	} `json:"IfcMedicalDeviceTypeEnum"`
	IfcMemberTypeEnum struct {
	} `json:"IfcMemberTypeEnum"`
	IfcMotorConnectionTypeEnum struct {
	} `json:"IfcMotorConnectionTypeEnum"`
	IfcNullStyleEnum struct {
	} `json:"IfcNullStyleEnum"`
	IfcObjectTypeEnum struct {
	} `json:"IfcObjectTypeEnum"`
	IfcObjectiveEnum struct {
	} `json:"IfcObjectiveEnum"`
	IfcOccupantTypeEnum struct {
	} `json:"IfcOccupantTypeEnum"`
	IfcOpeningElementTypeEnum struct {
	} `json:"IfcOpeningElementTypeEnum"`
	IfcOutletTypeEnum struct {
	} `json:"IfcOutletTypeEnum"`
	IfcPerformanceHistoryTypeEnum struct {
	} `json:"IfcPerformanceHistoryTypeEnum"`
	IfcPermeableCoveringOperationEnum struct {
	} `json:"IfcPermeableCoveringOperationEnum"`
	IfcPermitTypeEnum struct {
	} `json:"IfcPermitTypeEnum"`
	IfcPhysicalOrVirtualEnum struct {
	} `json:"IfcPhysicalOrVirtualEnum"`
	IfcPileConstructionEnum struct {
	} `json:"IfcPileConstructionEnum"`
	IfcPileTypeEnum struct {
	} `json:"IfcPileTypeEnum"`
	IfcPipeFittingTypeEnum struct {
	} `json:"IfcPipeFittingTypeEnum"`
	IfcPipeSegmentTypeEnum struct {
	} `json:"IfcPipeSegmentTypeEnum"`
	IfcPlateTypeEnum struct {
	} `json:"IfcPlateTypeEnum"`
	IfcPreferredSurfaceCurveRepresentation struct {
	} `json:"IfcPreferredSurfaceCurveRepresentation"`
	IfcProcedureTypeEnum struct {
	} `json:"IfcProcedureTypeEnum"`
	IfcProfileTypeEnum struct {
	} `json:"IfcProfileTypeEnum"`
	IfcProjectOrderTypeEnum struct {
	} `json:"IfcProjectOrderTypeEnum"`
	IfcProjectedOrTrueLengthEnum struct {
	} `json:"IfcProjectedOrTrueLengthEnum"`
	IfcProjectionElementTypeEnum struct {
	} `json:"IfcProjectionElementTypeEnum"`
	IfcPropertySetTemplateTypeEnum struct {
	} `json:"IfcPropertySetTemplateTypeEnum"`
	IfcProtectiveDeviceTrippingUnitTypeEnum struct {
	} `json:"IfcProtectiveDeviceTrippingUnitTypeEnum"`
	IfcProtectiveDeviceTypeEnum struct {
	} `json:"IfcProtectiveDeviceTypeEnum"`
	IfcPumpTypeEnum struct {
	} `json:"IfcPumpTypeEnum"`
	IfcRailingTypeEnum struct {
	} `json:"IfcRailingTypeEnum"`
	IfcRampFlightTypeEnum struct {
	} `json:"IfcRampFlightTypeEnum"`
	IfcRampTypeEnum struct {
	} `json:"IfcRampTypeEnum"`
	IfcRecurrenceTypeEnum struct {
	} `json:"IfcRecurrenceTypeEnum"`
	IfcReflectanceMethodEnum struct {
	} `json:"IfcReflectanceMethodEnum"`
	IfcReinforcingBarRoleEnum struct {
	} `json:"IfcReinforcingBarRoleEnum"`
	IfcReinforcingBarSurfaceEnum struct {
	} `json:"IfcReinforcingBarSurfaceEnum"`
	IfcReinforcingBarTypeEnum struct {
	} `json:"IfcReinforcingBarTypeEnum"`
	IfcReinforcingMeshTypeEnum struct {
	} `json:"IfcReinforcingMeshTypeEnum"`
	IfcRoleEnum struct {
	} `json:"IfcRoleEnum"`
	IfcRoofTypeEnum struct {
	} `json:"IfcRoofTypeEnum"`
	IfcSIPrefix struct {
	} `json:"IfcSIPrefix"`
	IfcSIUnitName struct {
	} `json:"IfcSIUnitName"`
	IfcSanitaryTerminalTypeEnum struct {
	} `json:"IfcSanitaryTerminalTypeEnum"`
	IfcSectionTypeEnum struct {
	} `json:"IfcSectionTypeEnum"`
	IfcSensorTypeEnum struct {
	} `json:"IfcSensorTypeEnum"`
	IfcSequenceEnum struct {
	} `json:"IfcSequenceEnum"`
	IfcShadingDeviceTypeEnum struct {
	} `json:"IfcShadingDeviceTypeEnum"`
	IfcSimplePropertyTemplateTypeEnum struct {
	} `json:"IfcSimplePropertyTemplateTypeEnum"`
	IfcSlabTypeEnum struct {
	} `json:"IfcSlabTypeEnum"`
	IfcSolarDeviceTypeEnum struct {
	} `json:"IfcSolarDeviceTypeEnum"`
	IfcSpaceHeaterTypeEnum struct {
	} `json:"IfcSpaceHeaterTypeEnum"`
	IfcSpaceTypeEnum struct {
	} `json:"IfcSpaceTypeEnum"`
	IfcSpatialZoneTypeEnum struct {
	} `json:"IfcSpatialZoneTypeEnum"`
	IfcStackTerminalTypeEnum struct {
	} `json:"IfcStackTerminalTypeEnum"`
	IfcStairFlightTypeEnum struct {
	} `json:"IfcStairFlightTypeEnum"`
	IfcStairTypeEnum struct {
	} `json:"IfcStairTypeEnum"`
	IfcStateEnum struct {
	} `json:"IfcStateEnum"`
	IfcStructuralCurveActivityTypeEnum struct {
	} `json:"IfcStructuralCurveActivityTypeEnum"`
	IfcStructuralCurveMemberTypeEnum struct {
	} `json:"IfcStructuralCurveMemberTypeEnum"`
	IfcStructuralSurfaceActivityTypeEnum struct {
	} `json:"IfcStructuralSurfaceActivityTypeEnum"`
	IfcStructuralSurfaceMemberTypeEnum struct {
	} `json:"IfcStructuralSurfaceMemberTypeEnum"`
	IfcSubContractResourceTypeEnum struct {
	} `json:"IfcSubContractResourceTypeEnum"`
	IfcSurfaceFeatureTypeEnum struct {
	} `json:"IfcSurfaceFeatureTypeEnum"`
	IfcSurfaceSide struct {
	} `json:"IfcSurfaceSide"`
	IfcSwitchingDeviceTypeEnum struct {
	} `json:"IfcSwitchingDeviceTypeEnum"`
	IfcSystemFurnitureElementTypeEnum struct {
	} `json:"IfcSystemFurnitureElementTypeEnum"`
	IfcTankTypeEnum struct {
	} `json:"IfcTankTypeEnum"`
	IfcTaskDurationEnum struct {
	} `json:"IfcTaskDurationEnum"`
	IfcTaskTypeEnum struct {
	} `json:"IfcTaskTypeEnum"`
	IfcTendonAnchorTypeEnum struct {
	} `json:"IfcTendonAnchorTypeEnum"`
	IfcTendonTypeEnum struct {
	} `json:"IfcTendonTypeEnum"`
	IfcTextPath struct {
	} `json:"IfcTextPath"`
	IfcTimeSeriesDataTypeEnum struct {
	} `json:"IfcTimeSeriesDataTypeEnum"`
	IfcTransformerTypeEnum struct {
	} `json:"IfcTransformerTypeEnum"`
	IfcTransitionCode struct {
	} `json:"IfcTransitionCode"`
	IfcTransportElementTypeEnum struct {
	} `json:"IfcTransportElementTypeEnum"`
	IfcTrimmingPreference struct {
	} `json:"IfcTrimmingPreference"`
	IfcTubeBundleTypeEnum struct {
	} `json:"IfcTubeBundleTypeEnum"`
	IfcUnitEnum struct {
	} `json:"IfcUnitEnum"`
	IfcUnitaryControlElementTypeEnum struct {
	} `json:"IfcUnitaryControlElementTypeEnum"`
	IfcUnitaryEquipmentTypeEnum struct {
	} `json:"IfcUnitaryEquipmentTypeEnum"`
	IfcValveTypeEnum struct {
	} `json:"IfcValveTypeEnum"`
	IfcVibrationIsolatorTypeEnum struct {
	} `json:"IfcVibrationIsolatorTypeEnum"`
	IfcVoidingFeatureTypeEnum struct {
	} `json:"IfcVoidingFeatureTypeEnum"`
	IfcWallTypeEnum struct {
	} `json:"IfcWallTypeEnum"`
	IfcWasteTerminalTypeEnum struct {
	} `json:"IfcWasteTerminalTypeEnum"`
	IfcWindowPanelOperationEnum struct {
	} `json:"IfcWindowPanelOperationEnum"`
	IfcWindowPanelPositionEnum struct {
	} `json:"IfcWindowPanelPositionEnum"`
	IfcWindowStyleConstructionEnum struct {
	} `json:"IfcWindowStyleConstructionEnum"`
	IfcWindowStyleOperationEnum struct {
	} `json:"IfcWindowStyleOperationEnum"`
	IfcWindowTypeEnum struct {
	} `json:"IfcWindowTypeEnum"`
	IfcWindowTypePartitioningEnum struct {
	} `json:"IfcWindowTypePartitioningEnum"`
	IfcWorkCalendarTypeEnum struct {
	} `json:"IfcWorkCalendarTypeEnum"`
	IfcWorkPlanTypeEnum struct {
	} `json:"IfcWorkPlanTypeEnum"`
	IfcWorkScheduleTypeEnum struct {
	} `json:"IfcWorkScheduleTypeEnum"`
	IfcArcIndex struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcArcIndex"`
	IfcComplexNumber struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
			WrappedValueAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValueAsString"`
		} `json:"fields"`
	} `json:"IfcComplexNumber"`
	IfcLineIndex struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcLineIndex"`
	IfcNullStyle struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
			WrappedValue struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"wrappedValue"`
		} `json:"fields"`
	} `json:"IfcNullStyle"`
	IfcActorSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcActorSelect"`
	IfcAppliedValueSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcAppliedValueSelect"`
	IfcAxis2Placement struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcAxis2Placement"`
	IfcBendingParameterSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcBendingParameterSelect"`
	IfcBooleanOperand struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcBooleanOperand"`
	IfcClassificationReferenceSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcClassificationReferenceSelect"`
	IfcClassificationSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcClassificationSelect"`
	IfcColour struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcColour"`
	IfcColourOrFactor struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcColourOrFactor"`
	IfcCoordinateReferenceSystemSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcCoordinateReferenceSystemSelect"`
	IfcCsgSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcCsgSelect"`
	IfcCurveFontOrScaledCurveFontSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcCurveFontOrScaledCurveFontSelect"`
	IfcCurveOnSurface struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcCurveOnSurface"`
	IfcCurveOrEdgeCurve struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcCurveOrEdgeCurve"`
	IfcCurveStyleFontSelect struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcCurveStyleFontSelect"`
	IfcDefinitionSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcDefinitionSelect"`
	IfcDerivedMeasureValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcDerivedMeasureValue"`
	IfcDocumentSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcDocumentSelect"`
	IfcFillStyleSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcFillStyleSelect"`
	IfcGeometricSetSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcGeometricSetSelect"`
	IfcGridPlacementDirectionSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcGridPlacementDirectionSelect"`
	IfcHatchLineDistanceSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcHatchLineDistanceSelect"`
	IfcLayeredItem struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcLayeredItem"`
	IfcLibrarySelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcLibrarySelect"`
	IfcLightDistributionDataSourceSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcLightDistributionDataSourceSelect"`
	IfcMaterialSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcMaterialSelect"`
	IfcMeasureValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcMeasureValue"`
	IfcMetricValueSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcMetricValueSelect"`
	IfcModulusOfRotationalSubgradeReactionSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcModulusOfRotationalSubgradeReactionSelect"`
	IfcModulusOfSubgradeReactionSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcModulusOfSubgradeReactionSelect"`
	IfcModulusOfTranslationalSubgradeReactionSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcModulusOfTranslationalSubgradeReactionSelect"`
	IfcObjectReferenceSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcObjectReferenceSelect"`
	IfcPointOrVertexPoint struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPointOrVertexPoint"`
	IfcPresentationStyleSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPresentationStyleSelect"`
	IfcProcessSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcProcessSelect"`
	IfcProductRepresentationSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcProductRepresentationSelect"`
	IfcProductSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcProductSelect"`
	IfcPropertySetDefinitionSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcPropertySetDefinitionSelect"`
	IfcResourceObjectSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcResourceObjectSelect"`
	IfcResourceSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcResourceSelect"`
	IfcRotationalStiffnessSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcRotationalStiffnessSelect"`
	IfcSegmentIndexSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSegmentIndexSelect"`
	IfcShell struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcShell"`
	IfcSimpleValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSimpleValue"`
	IfcSizeSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSizeSelect"`
	IfcSolidOrShell struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSolidOrShell"`
	IfcSpaceBoundarySelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSpaceBoundarySelect"`
	IfcSpecularHighlightSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSpecularHighlightSelect"`
	IfcStructuralActivityAssignmentSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStructuralActivityAssignmentSelect"`
	IfcStyleAssignmentSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcStyleAssignmentSelect"`
	IfcSurfaceOrFaceSurface struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSurfaceOrFaceSurface"`
	IfcSurfaceStyleElementSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcSurfaceStyleElementSelect"`
	IfcTextFontSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcTextFontSelect"`
	IfcTimeOrRatioSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcTimeOrRatioSelect"`
	IfcTranslationalStiffnessSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcTranslationalStiffnessSelect"`
	IfcTrimmingSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcTrimmingSelect"`
	IfcUnit struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcUnit"`
	IfcValue struct {
		Domain       string   `json:"domain"`
		Superclasses []string `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcValue"`
	IfcVectorOrDirection struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcVectorOrDirection"`
	IfcWarpingStiffnessSelect struct {
		Domain       string        `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
		} `json:"fields"`
	} `json:"IfcWarpingStiffnessSelect"`
	ListOfIfcCartesianPoint struct {
		Domain       interface{}   `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			List struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"List"`
		} `json:"fields"`
	} `json:"ListOfIfcCartesianPoint"`
	ListOfIfcLengthMeasure struct {
		Domain       interface{}   `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			List struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"List"`
		} `json:"fields"`
	} `json:"ListOfIfcLengthMeasure"`
	ListOfIfcNormalisedRatioMeasure struct {
		Domain       interface{}   `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			List struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"List"`
		} `json:"fields"`
	} `json:"ListOfIfcNormalisedRatioMeasure"`
	ListOfELong struct {
		Domain       interface{}   `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			List struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"List"`
		} `json:"fields"`
	} `json:"ListOfELong"`
	ListOfEDouble struct {
		Domain       interface{}   `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			List struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"List"`
			ListAsString struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"ListAsString"`
		} `json:"fields"`
	} `json:"ListOfEDouble"`
	ListOfIfcParameterValue struct {
		Domain       interface{}   `json:"domain"`
		Superclasses []interface{} `json:"superclasses"`
		Fields       struct {
			List struct {
				Type      string `json:"type"`
				Reference bool   `json:"reference"`
				Many      bool   `json:"many"`
				Inverse   bool   `json:"inverse"`
			} `json:"List"`
		} `json:"fields"`
	} `json:"ListOfIfcParameterValue"`
}
